PageHelper의 페이지 매김을 사용할 때 페이지 번호가 전체 데이터 페이지 수보다 크면 데이터의 마지막 페이지가 반환됩니다. 요구 사항: 반환된 데이터는 비어 있습니다.

Ruoyi의 프레임워크를 사용할 때 발생하는 페이지 매김 문제: PageHelper를 사용할 때 페이지 수가 최대 수를 초과하고 데이터(데이터의 마지막 페이지)가 여전히 반환될 수 있음 요구 사항: 반환된 데이터가 비어 있습니다.

그 이유는 pagehelper의 기본 구성 정보가 합리적이기 때문입니다.

pagehelper.reasonable=true인 경우
먼저 데이터베이스에서 쿼리 범위를 설정한 다음 조건에 따라 쿼리합니다. 이때 쿼리 범위 밖의 데이터는 찾을 수 없으므로
pagehelper.reasonable=false인 경우
조건에 따라 데이터베이스를 먼저 쿼리한 후 범위에 따라 페이지 매김을 수행합니다.

그러나 application.yml의 페이징 구성이 수정되고 페이징으로 얻은 데이터는 변경되지 않습니다. 아래 그림과 같이:

그런 다음 PageUtils.startPage() 메서드에서 코드를 직접 수정하여 아래와 같이 문제를 해결합니다.

위의 내용으로 문제를 해결할 수 없는 경우 다음을 참조하십시오.

프로젝트의 일부 함수는 다음 코드를 사용하여 페이징 처리를 위해 PageHelper를 사용합니다.

PageHelper.startPage(request.getPageNum(), request.getPageSize(), true);



요청한 페이지 번호가 0이면 모든 데이터를 반환하고,
요청한 페이지 번호가 0보다 작으면 데이터의 첫 번째 페이지를 반환하고, 페이지 수가 전체보다 크면 데이터의 첫 번째 페이지를 반환하는 방식입니다 . 페이지 수, 마지막 페이지가 데이터로 반환됩니다.

디버그 추적을 통해 합리적인 매개변수가 true로 기본 설정되면 pageNum이 페이지 크기로 재설정되어 요청된 페이지 수가 전체 페이지 수보다 많을 때 반환되는 마지막 페이지의 데이터 문제가 발생함을 발견했습니다. 페이지의.

여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

솔루션:
사용 방법 수정

PageHelper.startPage(request.getPageNum(), request.getPageSize(), true,false,null);


위의 방법은 요청한 페이지 번호가 0 미만인 경우 첫 번째 페이지의 데이터를 반환하고 페이지 번호가 전체 페이지 수보다 큰 경우 마지막 페이지의 데이터를 반환하는 문제를 해결할 수 있습니다.

또한 요청한 페이지 수가 총 페이지 수보다 적으면 모든 데이터가 반환된다는 분석도 필요하며, 이는 다른 매개변수인 pageSizeZero에
의해 제어됩니다 .
pagesize를 0(또는 RowBounds limit = 0)으로 설정하면 pagination을 수행하지 않고 모든 결과를 반환하며,
false로 설정하면 요청한 페이지 수 = 0일 때 모든 데이터가 반환되는 문제를 해결한다.

사용법 수정 

PageHelper.startPage(request.getPageNum(), request.getPageSize(), true,false,false);

참조: 마스터의 Mybatis-PageHelper/HowToUse.md · pagehelper/Mybatis-PageHelper · GitHub 

추천

출처blog.csdn.net/yyongsheng/article/details/127565176