分頁插件:
1.添加依賴:
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.0</version> </dependency>
2.在mybatis主配置文件中配置分頁插件:
分頁插件使用:
使用mybatis的分頁插件實現分頁功能:
1.需要在查詢功能之前開啟分頁
PageHelper.startPage(2【從第幾頁開始】,4【每頁顯示的數據】);
/** * limit,index,pageSize * index:當前頁的起始索引 * pageSize:每頁顯示的信息條數 * pageNum:當前的頁碼 * index=(pageNum-1)*pageSixe */ @Test public void testHelpPage(){ try { InputStream in = Resources.getResourceAsStream("Mybatis.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); SqlSession session = sqlSessionFactory.openSession(true); EmpMapper mapper = session.getMapper(EmpMapper.class); PageHelper.startPage(2,4); List<Emp> emps = mapper.selectByExample(null); PageInfo<Emp> page = new PageInfo<>(emps,5); System.out.println(page); emps.forEach(emp -> System.out.println(emp)); } catch (IOException e) { e.printStackTrace(); } }
2.在查詢功能結束后獲取分頁相關信息
PageInfo<Emp> page = new PageInfo<>(emps,5);進行導航分頁
emps:表示分頁數據
5:表示當前導航分頁的數量
運行結果:
顯示第二頁,一頁4條數據
結果具體分析:
PageInfo{pageNum=2, pageSize=4, size=4, startRow=5, endRow=8, total=11, pages=3, list=Page{count=true, pageNum=2, pageSize=4, startRow=4, endRow=8, total=11, pages=3, reasonable=false, pageSizeZero=false}prePage=1, nextPage=3, isFirstPage=false, isLastPage=false, hasPreviousPage=true, hasNextPage=true, navigatePages=5, navigateFirstPage=1, navigateLastPage=3, navigatepageNums=[1, 2, 3]}
pageNum=2表示當前頁碼數
pageSize=4:表示一頁的數據
size=4:這第二頁的真實數據個數
startRow=5:第二頁四個數據從數據庫表單中第5個數據開始
endRow=8:第二頁四個數據從數據庫表單中第8個數據結束
total=11:數據庫表單總數據條數
pages=3:總頁數
prePage=1:這頁的上一頁
nextPage=3:這頁的下一頁
isFirstPage=false:判斷是否是第一頁
isLastPage=false:判斷是否是最后一頁
hasPreviousPage=true:是否有上一頁
hasNextPage=true:是否有下一頁
navigatePages=5:這個就是我們在方法中輸入的參數(PageInfo<Emp> page = new PageInfo<>(emps,5);)
navigateFirstPage=1:導航分頁從第1頁開始
navigateLastPage=3:導航分頁從第3頁結束
navigatepageNums=[1, 2, 3]:進行底層運算,計算出導航分頁頁碼
總結:
a>在查詢功能之前使用PageHelper.startPage(int pageNum, int pageSize)開啟分頁功能
pageNum:當前頁的頁碼 pageSize:每頁顯示的條數
b>在查詢獲取list集合之后,使用PageInfo pageInfo = new PageInfo<>(List list, int navigatePages)獲取分頁相關數據
list:分頁之后的數據 navigatePages:導航分頁的頁碼數
c>分頁相關數據
PageInfo{ pageNum=8, pageSize=4, size=2, startRow=29, endRow=30, total=30, pages=8, list=Page{count=true, pageNum=8, pageSize=4, startRow=28, endRow=32, total=30, pages=8, reasonable=false, pageSizeZero=false}, prePage=7, nextPage=0, isFirstPage=false, isLastPage=true, hasPreviousPage=true, hasNextPage=false, navigatePages=5, navigateFirstPage4, navigateLastPage8, navigatepageNums=[4, 5, 6, 7, 8] }
常用數據:
pageNum:當前頁的頁碼 pageSize:每頁顯示的條數
size:當前頁顯示的真實條數 total:總記錄數
pages:總頁數 prePage:上一頁的頁碼
nextPage:下一頁的頁碼 isFirstPage/isLastPage:是否為第一頁/最后一頁
hasPreviousPage/hasNextPage:是否存在上一頁/下一頁
navigatePages:導航分頁的頁碼數
navigatepageNums:導航分頁的頁碼,[1,2,3,4,5]