페이징을 처음 하나하나 만들었을때는 정말... 어렵다기보단 귀찮고 손이 많이 갔다.
다행히 최근에 알게된 pagehelper를 사용하면 페이징에 필요한 정보를 한번에 간단하게 얻을 수 있게 된다.
아래는 pagehelper를 적용하기 위한 셈플 소스
1. gradle에 추가
1
|
implementation group: 'com.github.pagehelper', name: 'pagehelper-spring-boot-starter', version: '1.2.10'
|
cs |
2. properties 추가
1
2
3
|
# Pagehelper Setting (사용하는 DB, 페이지 번호의 가능 범위 자동 제한)
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
|
cs |
3. controller
1
2
3
4
|
@GetMapping(value = "/getPageList")
public PageInfo<GroupCode> getPageList(SearchGrpCodeReqDTO serachDTO) throws Exception {
return new PageInfo<GroupCode>(service.getPageList(serachDTO));
}
|
cs |
4. service
PageHelper.startPage(현재 페이지 번호, 한 페이지에 노출할 row 수);
1
2
3
4
|
public Page<GroupCode> getPageList(SearchGrpCodeReqDTO reqDTO) throws Exception {
PageHelper.startPage(reqDTO.getPage(), reqDTO.getPageSize());
return (Page<GroupCode>) groupCoceMapper.getPageList(reqDTO);
}
|
cs |
5. mapper
1
|
public Page<GroupCode> getPageList(SearchGrpCodeReqDTO serachReqDTO) throws Exception ;
|
cs |
6. mapper.xml
1
2
3
4
5
6
|
<select id="getPageList"
parameterType="com.deonggi.bookkeeping.admin.system.grpcd.service.dto.SearchGrpCodeReqDTO"
resultType="com.deonggi.bookkeeping.core.model.entity.GroupCode">
SELECT * FROM GROUP_CODE
ORDER BY CRT_DT ASC
</select>
|
cs |
7. 리턴된 결과
(참고로 GROUP_CODE 테이블의 전체 row 수는 16개다.)
mapper.xml에서는 모든 row를 조회하지만,
pagehelper를 적용하면 실제 list에는 아래 쿼리 조회 결과만 들어 있다.
SELECT * FROM GROUP_CODE
ORDER BY CRT_DT ASC LIMIT 5
쿼리문에 limit 가 추가되어 있는데 이 정보는 위 4번에서 PageHelper.startPage()에 의해 적용되는 정보다.
결과적으로 pagehelper를 적용하면 개발자는 한번의 조회를 위한 코드를 통해 페이징을 위한 모든 정보를 얻을 수 있게 된다.
## pagehelper github의 정보 : github.com/pagehelper/Mybatis-PageHelper
중국어라 왠지 신뢰가 안 갈 수 있지만 상당히 쓸만하다....
'코딩 삽질' 카테고리의 다른 글
[jQuery DataTable] table paging 적용 (0) | 2021.03.31 |
---|---|
[java, spring] spring.jackson.date-format 적용하기 (0) | 2021.03.31 |
[java] StringTrimConverter (0) | 2021.03.24 |
[java, spring] modelmapper 사용하기 (0) | 2021.03.24 |
[sts] war 생성 (0) | 2020.09.16 |