Spring 게시판 만들기(18)
list에 연결 다시하기
SQL 문 작성
parameterType는 Criteria 클래스의 변수를 받아오는 역할로 넣고
결과는 그대로 BoardVO로 출력한다
<select id="getListWithPaging" parameterType="com.demo.domain.Criteria" resultType="com.demo.domain.BoardVO">
<![CDATA[
SELECT RN, BNO, TITLE, CONTENT, WRITER, REGDATE
FROM ( SELECT /*+ INDEX_DESC(TBL_BOARD PK_BOARD) */ ROWNUM RN, BNO, TITLE, CONTENT, WRITER, REGDATE
FROM TBL_BOARD
WHERE ROWNUM <= (#{pageNum} * #{amount}))
WHERE RN > ((#{pageNum}-1) * #{amount})
]]>
</select>
Mapper 작성
// 현재는 검색기능 제외
List<BoardVO> getListWithPaging(Criteria cri);
Service와 ServiceImpl에도 작성
List<BoardVO> getListWithPaging(Criteria cri);
@Override
public List<BoardVO> getListWithPaging(Criteria cri) {
return mapper.getListWithPaging(cri);
}
컨트롤러에 지난 list지우고 다시 작성
// // /board/list 주소요청으로 list.jsp에 데이터 전달작업을 하고자 할 경우
// // 메서드의 파라미터로 Model model을 추가해야 한다
// @GetMapping("/list")
// public void list(Model model) {
//
// // list를 가져오는 역할
// List<BoardVO> list = service.getList();
//
// // addAttribute를 통해 list.jsp에 넣는 역할
// model.addAttribute("list", list);
// // 첫번째 "list"는 jsp 파일 내에서 서버를 불러올때 사용하는 변수
//
// log.info("list called...");
// }
// 페이징 작업
// 1 2 3 4 5 <a href="/board/list?pageNum=선택번호&amount=10">
@GetMapping("/list") // 스프링이 Criteria cri = new Criteria();
public void list(Criteria cri, Model model) {
log.info("list : " + cri);
List<BoardVO> list = service.getListWithPaging(cri);
model.addAttribute("list", list);
}
주의할 점은
Criteria 클래스에 기본생성자 정의가 이루어지지 않으면
컨트롤러의 list 메서드 안에 Criteria cri가 작동하지 않는다
댓글남기기