Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- boolean배열
- ㅓㅂ
- while문이 틀린이유?? math.random()을 사용해서푸는법?
- 그럼 int배열의 deefault값은?????
- bindingresult 쓰니까 에러났다. 어떻게해야하냐;;
- form.getImageFies 오타났음
- (참고로 boolean 배열의 default 값은 false 이다.
- 행열. 2중반복문..
- 마지막에 배열의 foreach구문이 틀린것같은데 ...... 저게왜틀린건지나는잘모르겠슴다.
- 출처:구멍가게코딩단-코배스(개정판)
- 생활코딩
Archives
- Today
- Total
푸린세스
mysql 페이징2 본문
select R1.* FROM(
SELECT * FROM tbl_board
order by bno desc
) R1
LIMIT 10 OFFSET 0;
BoardMapper.xml에 Criteria를 이용하여 적용시켜보자.
Criteria.java (domain) - DTO 데이터전달용
-int pageNum
-int amount
문제점::
<select id="getListWithPaging" resultType="org.moominzero.domain.BoardVO">
<![CDATA[select R1.* FROM(
SELECT * FROM tbl_board
order by bno desc
) R1
LIMIT #{amount} OFFSET (#{pageNum}-1) * #{amount};]]>
</select>
이런식으로 xml을 작성할경우
테스트
select R1.* FROM( SELECT * FROM tbl_board order by bno desc ) R1 LIMIT 10 OFFSET (2-1) * 10;
구문에서 에러가 난다. (연산을 못하는듯하다.)
해결방법
criteria 클래스에
skipCount 라는 변수를 선언
package org.moominzero.domain;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class Criteria {
private int pageNum;
private int amount;
private int skipCount;
public Criteria() {
this(1,10);
}
public Criteria(int pageNum, int amount) {
this.pageNum = pageNum;
this.amount = amount;
this.skipCount = (pageNum -1) * amount;
}
public int getSkipCount() {
return (this.pageNum - 1) * this.amount;
}
}
테스트::
//페이징 테스트
@Test
public void testPaging() {
Criteria cri = new Criteria();
//10개씩 2페이지
cri.setPageNum(2);
cri.setAmount(10);
List<BoardVO> list = mapper.getListWithPaging(cri);
list.forEach(board -> log.info(board));
}
알맞게 실행되었다!
INFO : jdbc.sqltiming - select R1.* FROM( SELECT * FROM tbl_board order by bno desc ) R1 LIMIT 10 OFFSET 10
{executed in 129 msec}