728x90
반응형

페이징을 처음 하나하나 만들었을때는 정말... 어렵다기보단 귀찮고 손이 많이 갔다.

다행히 최근에 알게된 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

 

pagehelper/Mybatis-PageHelper

Mybatis通用分页插件. Contribute to pagehelper/Mybatis-PageHelper development by creating an account on GitHub.

github.com

중국어라 왠지 신뢰가 안 갈 수 있지만 상당히 쓸만하다....

728x90
반응형

'코딩 삽질' 카테고리의 다른 글

[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

+ Recent posts