실제 프로젝트에 플러그인 PageHelper의 페이지 매김 사용하는 방법

PageHelper가있는 페이지 매김 플러그인, 빠르고 쉽게 완전한 일반적인 페이징 기능, 당신은 단순히 페이징 효과를 완료하는 두 줄의 코드를 사용할 필요가 캔 도움말 개발자 ...

지점은 최근 다음 전체 PageHelper 페이징 페이징 기능에 도구를 사용하여, 기능이 페이징되어, 메이븐 + SSM 환경을 사용하여 프로젝트를 한 경험이 매우 좋다.

1. 데이터베이스 준비

데이터 베이스

테이블의 자신의 기사 개성을 작성하는 사용자를 t_diy, t_categories 기사의 분류, t_user 사용자 테이블, 페이지 매김은 DIY 정보가 분류 ID에 따라 범주를 대응하는 표시 찾을 수 있습니다.

2. PageHelper 도입

1. pom.xml 파일에 의존 등장

1 
2
3
4
5
<의존성> 
<의 groupId> com.github.pagehelper </의 groupId>
<artifactId를> pagehelper </ artifactId를>
<version>은 5.1.10 </ 버전>
</ 의존성>

(공식은 현재 최신 5.1.10이며, 최신 버전을 사용하는 것이 좋습니다)
pagehelper.jar 및 jsqlparser.jar의 도입에 대한 공식적인 설명이 있지만, 사실은 자동으로 소개되지만 jsqlparser.jar 소개 pagehelper.jar

2. 구성의 MyBatis 플러그인
스프링 구성 파일을 구성하도록 선택할 수 있습니다, 당신은 또한 플러그인의 MyBatis 글로벌 구성 파일을 구성 할 수 있습니다. 나는 MyBatis로 글로벌 구성 파일에 있었다.

1 
2
3
<플러그인> 
<플러그인 인터셉터 = "com.github.pagehelper.PageInterceptor"> </ 플러그인>
</ 플러그인>

여기에서 우리는 (나는 구덩이 계단) 참고 :

위치를 작성하는 참고 플러그인

시작 PageHelper

아주 사용하기 쉬운, PageHelper.startPage (pageNum, pageSize가) 전화; 첫 번째 매개 변수는 두 번째 매개 변수는 페이지 크기이며, 처음 몇 페이지입니다 밀접하게 첫 번째 쿼리 다음 페이지를 조회하는 것입니다 .

페이지의 디스플레이를 용이하게하고 처리 결과를 조회하는데 사용될 수 위해 PageInfo 패키지 결과 PageInfo pageInfo = 새로운 PageInfo (데이터 , navigatePages)를, 첫 번째 파라미터는 상기 질의 데이터 세트의 밖으로, 그것은 일반적에서, 제 일 수있다 인수는 지속적으로 페이지가 (생략 가능) 얼마나 많은 페이지를 표시 할 필요가있다.

다음은 내 코드입니다 :

1 
2
3
4
5
6
7
8
9
10
@RequestMapping (값 = "/ showCategory") 
공중 문자열 getCategories (@RequestParam ( "CID") CID 정수 @ RequestParam (값 = "pageNum"DEFAULTVALUE = ". 1") 정수 PN하는 ModelMap 맵) {
PageHelper.startPage ( PN, 14), 페이지 정보 당 // (14)
목록 <DIY> diys = diyService.getCategories ( CID); // ID를 얻을 CID 모든 기밀 정보 DIY
PageInfo pageInfo = 새로운 PageInfo (diys, 5); // PageInfo로 패키지
map.addAttribute ( "PageInfo"PageInfo) PageInfo 페이지를 통과 // 직접 사용할 EL 식 획득 될 수
map.addAttribute ( "COLS를"XBookUtil.getDiyCategoriesCols ( pageInfo.getSize ())); // 이 방법 나는 종류의 데이터 (상관 없어) 설계에 비교 중 하나입니다
; map.addAttribute ( "curCategory"새로운 새로운 정수 (CID))
categoryView :; 반환 "HTML / bookDIY / categoryView에서"// 카테고리 페이지보기 .jsp로
}

SQL 문으로, 페이징 관련 작업을 수행 할 필요가 없습니다, 내 문은 간단한의 SQL 쿼리는 다음과 같습니다

이것은 물론, 가장 쉽고 가장 일반적인 페이징 기능을 완료 매우 간단하지 않다.

사용 부트 스트랩 미화 페이지 열

페이지 된 데이터는 물론, 페이지를 최적화 할 필요성, 부트 스트랩이 제공하는 사용하기 쉬운 프런트 엔드 라이브러리,되었습니다 많은 열  실제 프로젝트에 플러그인 PageHelper의 페이지 매김 사용하는 방법에 : 스타일을 많이, 주소, HTTPS : //v4.bootcss합니다. COM

부트 스트랩은 페이지 표시 줄 스타일을 제공, 특정 사용했다되지 않으며, 공식 웹 사이트를 참조 할 수 있습니다. 원하는 효과는 다음과 같아야합니다 :

사실 그것은 작은 로직이 많이 포함되어 있습니다

  • 홈 페이지 이전 페이지를 표시하지 않습니다, 첫 번째 점없는
  • 마지막으로, 마지막 페이지는 점은 어떤 쇼가 끝나고,없는 경우
  • 하이라이트 현재 페이지
  • 사용자가 클릭은 표시된 페이지를 업데이트

당신이 혜택 결과가 PageInfo, 쉽게 논리를 제어 할 수 있습니다 이러한 PageInfo의 사용을 포장하려는 이유의 그 :

  1. PageInfo 표시되어야하는 현재 페이지의 번호를 저장하는 속성 navigatepageNums을 갖고, 두 번째 인수 전에 PageInfo 건설 관련. (루프 디스플레이 페이지)
  2. PageInfo의 데이터 페이지를 저장하는 속성리스트를 갖는다 (데이터 수집)
  3. PageInfo는 특성을 갖는다 pageNum 현재 페이지 번호를 표시 (강조 여부를 판정)
  4. PageInfo는이 첫 번째와 마지막 페이지 (첫 번째와 마지막 페이지 컨트롤 버튼이 앞면과 뒷면 페이지를 표시 숨겨진하는) 여부를 나타내는, isFirstPage, isLastPage 속성

다음과 같이 내 코드는 다음과 같습니다

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
<C : 만약 테스트 = "$ {pageInfo.list.size ()> 0}"> 
<div 클래스 = "컨테이너 MB-5">
<UL 등급 = "페이징 정당화 콘텐츠 중심을">
<C : 만약 테스트 = "$ {pageInfo.isFirstPage}">
<LI 클래스 = "페이지 항목을 비활성화"> <a class="page-link"보기 </a>首页</A> </ 리>
</ C : 경우 >
<C : 만약 테스트 = "$ {! pageInfo.isFirstPage = TRUE}">
<LI 클래스 = "페이지 항목"> <클래스 = "페이지 링크"HREF = "$ {pageContext.request.contextPath} / HTML / bookDIY / showCategory? CID = $ {curCategory} ">首页</A> </ 리>
<LI 클래스 ="페이지 항목 "> <a class="page-link" href="${pageContext.request.contextPath}/html/bookDIY/showCategory?cId=${curCategory}&pageNum=${pageInfo.pageNum-1}"> <<< / A> </ 리>
</ C : 경우>
<C : foreach는 항목 = "$ {pageInfo.navigatepageNums}"VAR = "PN">
<C : 만약 테스트 = "$ {pageInfo.pageNum == PN}">
<LI 클래스 = "페이지 "</A> </ 리>> <A class="page-link"보기 </a> $ {} PN 활성을 -item
</ C를 : 경우>
<C : 만약 테스트 ="$ {pageInfo.pageNum ! = PN} ">
<LI 클래스 ="페이지 항목 "> <클래스 ="페이지 링크 "HREF ="$ {pageContext.request.contextPath} / HTML / bookDIY / showCategory? CID = $ {curCategory} pageNum PN = $ {} "> $ {} PN </A> </ 리>
</ C> 만약
</ C :대해 forEach>
<C : 만약 테스트 = "$ {pageInfo.isLastPage}">
<LI 클래스 = "페이지 항목을 비활성화"> <a class="page-link"보기 </a>末页</A> </ 리>
</ C의 경우>
<C : 만약 테스트 = "$ {pageInfo.isLastPage! = TRUE} ">
<LI 클래스 ="페이지 항목 "> <클래스 ="페이지 링크 "HREF ="$ {pageContext.request.contextPath} / HTML / bookDIY / showCategory? CID = $ {} curCategory pageNum = $ {pageInfo.pageNum + 1} ">>> </A> </ 리>
<LI 클래스 ="페이지 항목 "> <클래스 ="페이지 링크 "HREF ="$ {를 pageContext에 ? .request.contextPath} / HTML / bookDIY / showCategory CID = $ {} curCategory pageNum = $ {} pageInfo.pages ">末页</A> </ 리>
</ C : 경우>
</ UL>
</ DIV>
</ C : 경우>

最后的效果如下所示:
![](如何在实际项目中使用PageHelper分页插件/result.PNG)

(数据有限,只有两页...)

추천

출처www.cnblogs.com/lijianming180/p/12046765.html