PageHelper 페이지 총수 가 맞지 않 습 니 다. 돌아 오 는 총 수 는 항상 현재 페이지 수 와 같 습 니 다.

19261 단어
위 챗 공식 번호: [빅 데 이 터 를 같이 배 워 야 지] 관심 은 더 이상 한 지식 을 배 울 수 있어!
앞에서 말 했 듯 이 며칠 전에 페이지 를 나 누 어 큰 머리 를 만 났 는데 큰 사람 은 나 에 게 PageHelper 로 쓰 라 고 했 고 다른 항목 을 보고 참고 하 라 고 했다.
결국 차 가 뒤 집 혔 어!!
원래 코드
public Result<PageInfo<TestVo >> queryList(Integer pageIndex, Integer pageSize){
		// pageIndex        
		// pageSize          
        PageHelper.startPage(pageIndex, pageSize);
        //      
        List<TestEntity> list = xxxService.findXXXList();
        //entity   Vo
        List<TestVo > voList = new ArrayList<>();
        for(TestEntity entity : list){
		        TestVo testVo = new TestVo(); 
		    	BeanUtils.copyProperties(entity, testVo );
		    	voList.add(vo);
		}
        PageInfo<TestVo > pageInfo = new PageInfo<>(TestVo );
        return Result.success(pageInfo);
   }

그래서 문 제 는 돌아 오 는 총 페이지 수 는 80 개 라 는 것 이다. 그러나 현재 페이지 는 20 개, 총 20 개 에 불과 하 다.
조사 결과 에 따 르 면 저 는 큰 놈 의 쓰기 방법 을 참 고 했 습 니 다. 이상 이 없습니다. 문법 (SQL 문 구 를 포함) SQL 문 구 를 가 져 가서 모든 결 과 를 찾 았 습 니 다.
어떤 pom 파일 등 기본 설정 이 있 는 지 에 대해 서 는 PageHelper 를 호출 한 적 이 있 기 때 문 입 니 다.
인터넷 블 로 그 를 둘 러 보 세 요. 좋 은 녀석, 원래 문 제 는 enity 에서 Vo 로 전환 하 는 단계 에 있 었 습 니 다.
수정 후
public Result<PageInfo<TestVo >> queryList(Integer pageIndex, Integer pageSize){
		// pageIndex        
		// pageSize          
        PageHelper.startPage(pageIndex, pageSize);
        //      
        List<TestEntity> list = xxxService.findXXXList();
        //add
        PageInfo<TestEntity> page = new PageInfo<>(list);
        //entity   Vo
        List<TestVo > voList = new ArrayList<>();
        for(TestEntity entity : list){
		        TestVo testVo = new TestVo(); 
		    	BeanUtils.copyProperties(entity, testVo );
		    	voList.add(vo);
		}
        PageInfo<TestVo > pageInfo = new PageInfo<>(volist);
        //entity page       vo page 
        BeanUtils.copyProperties(page ,pageInfo );
        return Result.success(pageInfo);
   }

요약 1) 우선 PageHelper. startPage (pageIndex, pageSize);페이지 인 스 턴 스 를 되 돌려 주 는 것 입 니 다. 그 안에 총수, 현재 페이지 수량 등 정보 가 포함 되 어 있 습 니 다.
2)List list = xxxService.findXXXList(); 이 list 는 페이지 플러그 인 을 통 해 처 리 된 결과 겉 으로 는 List 형식 이 고 실제로는 Page (extends ArrayList) 입 니 다.
PageInfo 원본 코드:
 public PageInfo(List<T> list) {
        this(list, 8);
    }

    public PageInfo(List<T> list, int navigatePages) {
        super(list);
        this.isFirstPage = false;
        this.isLastPage = false;
        this.hasPreviousPage = false;
        this.hasNextPage = false;
        // instanceof                      
        if (list instanceof Page) { //        !!!
            Page page = (Page)list;
            this.pageNum = page.getPageNum();
            this.pageSize = page.getPageSize();
            this.pages = page.getPages();
            this.size = page.size();
            if (this.size == 0) {
                this.startRow = 0;
                this.endRow = 0;
            } else {
                this.startRow = page.getStartRow() + 1;
                this.endRow = this.startRow - 1 + this.size;
            }
        } else if (list instanceof Collection) {
            this.pageNum = 1;
            this.pageSize = list.size();
            this.pages = this.pageSize > 0 ? 1 : 0;
            this.size = list.size();
            this.startRow = 0;
            this.endRow = list.size() > 0 ? list.size() - 1 : 0;
        }

        if (list instanceof Collection) {
            this.navigatePages = navigatePages;
            this.calcNavigatepageNums();
            this.calcPage();
            this.judgePageBoudary();
        }

    }

3) entity 형식의 list 를 vo 형식의 list 로 바 꾸 고 PageInfo 에 넣 으 면 페이지 정 보 를 잃 어 버 립 니 다.
참고 문헌 1: PageInfo 가 되 돌아 오 는 totalk 이 정확 하지 않 습 니 다. list 의 size 와 같 습 니 다. 2: pageInfo 의 totalk 속성 은 현재 페이지 기록 수 입 니 다. totalk 을 총 기록 수로 설정 하 는 방법 을 설정 합 니까?

좋은 웹페이지 즐겨찾기