Mybatis-分页插件
分页插件:
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]
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 快收藏!一个技巧从此不再搞混缓存穿透和缓存击穿
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!