결과를 검색하는 findAll() 에서 어려운 부분은 사용자가 검색하는 값에 따라서 실행하는 SQL이동적으로 달려져야 한다는 점이다.
예를 들어서 다음과 같다.
검색 조건이 없음
select id, item_name, price, quantity from item
최대 가격( maxPrice )으로 검색
select id, item_name, price, quantity from item
where price <= ?
상품명( itemName ), 최대 가격( maxPrice ) 둘다 검색
select id, item_name, price, quantity from item
where item_name like concat('%',?,'%')
and price <= ?
결과적으로 4가지 상황에 따른 SQL을 동적으로 생성해야 한다. 동적 쿼리가 언듯 보면 쉬워 보이지만, 막상 개발해보면 생각보다 다양한 상황을 고민해야 한다. 예를 들어서 어떤 경우에는 where 를 앞에 넣고 어떤 경우에는 and 를 넣어야 하는지 등을 모두 계산해야 한다. 그리고 각 상황에 맞추어 파라미터도 생성해야 한다. 물론 실무에서는 이보다 훨씬 더 복잡한 동적 쿼리들이 사용된다.
출처 : 김영환 스프링 DB2 강의
'데이터 접근 기술 > JdbcTemplate' 카테고리의 다른 글
JdbcTemplate - 이름 지정 파라미터 2 (0) | 2022.08.12 |
---|---|
JdbcTemplate - 이름 지정 파라미터 1 (0) | 2022.08.12 |
JdbcTemplate 적용3 - 구성과 실행 (0) | 2022.08.12 |
JdbcTemplate 적용1 - 기본 (0) | 2022.08.12 |
JdbcTemplate 소개와 설정 (0) | 2022.08.11 |