sql.xml
<!-- 책 목록 -->
<!-- 스프링에서 "_"를 사용한 컬럼명을 사용 시 테이블 컬럼명에 "_"가 있을 경우 카멜케이스로 읽어줌 -->
<!--
map : {keyword=이방원}
WHERE 1 = 1은 관습적인 구문. 1=1은 항상 TRUE이고
-조건이 2개 이상일 경우 처음 시작하는 조건은 WHERE로 시작하고
두번째로 시작하는 조건은 AND여야 함 (그래서 밑에 말도안되는 where 1 = 1를 넣어준거임!!)
-매번 첫 번째 조건인지 검사하는 것은 번거롭기 때문에 무조건 WHERE 1 = 1 을 써 둔 후
나머지 조건을 AND로 이어붙임
- 동적쿼리 : 쿼리의 내용이 파라미터가 아니라 마이바티스의 규칙에 의해 변경되는 것
-->
<select id="list" parameterType="hashMap" resultType="bookVO">
select BOOK_ID,TITLE,CATEGORY,PRICE,INSERT_DATE
from book
where 1 = 1
<if test="keyword!=null and keyword!=''">
AND (TITLE LIKE '%' || #{keyword} || '%' OR
CATEGORY LIKE '%' || #{keyword} || '%')
</if>
order by book_id desc
</select>
dao
//책 목록(던질 파라미터가 없기 때문에 받아줄 파라미터도 필요없음)
//map : {"keyword", "방원"}
public List<BookVO> list(Map<String, Object> map) {
//sqlSessionTemplate는 root-context에서 온 놈
//namespace.id = book.list
//.selectList() 메소드는 결과 집합 목록을 가져올때 사용
//List 타입으로 읽어 들 일 수 있음
return sqlSessionTemplate.selectList("book.list", map);
}
serviceImpl
//책 목록
@Override
public List<BookVO> list(Map<String, Object> map) {
return this.bookDao.list(map);
}
service
//book 목록보기
public List<BookVO> list(Map<String, Object> map);
controller
//localhost:8090/list?keyword=이방원
//리스트 뽑기
//메핑에 의해서
//map : {"keyword":"이방원"} //키 : 값
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ModelAndView list(ModelAndView mav,
@RequestParam Map<String, Object> map) {//mav에
//스프링은 인터페이스를 좋아해서~~ bookService를 불러야함!
List<BookVO> list = this.bookService.list(map);
//데이터를 VIEW에 전달할 수 있도록 mav 객체에 add함
mav.addObject("data",list);//data가 list로 넘어가는것!!
//forwarding
mav.setViewName("book/list");//리스트를 넣어줌
return mav;//mav리턴
}