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가 작동하지 않는다

댓글남기기