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의 사용을 포장하려는 이유의 그 :
PageInfo 표시되어야하는 현재 페이지의 번호를 저장하는 속성 navigatepageNums을 갖고, 두 번째 인수 전에 PageInfo 건설 관련. (루프 디스플레이 페이지)
PageInfo의 데이터 페이지를 저장하는 속성리스트를 갖는다 (데이터 수집)
PageInfo는 특성을 갖는다 pageNum 현재 페이지 번호를 표시 (강조 여부를 판정)
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)
(数据有限,只有两页...)