SpringBoot集成MyBatis的分页插件PageHelper实例代码
昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效。因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用烂了,下面带着各位吃一下回头草。
首先说说MyBatis框架的PageHelper插件吧,它是一个非常好用的分页插件,通常我们的项目中如果集成了MyBatis的话,几乎都会用到它,因为分页的业务逻辑说复杂也不复杂,但是有插件我们何乐而不为?通常引入它们只需三步骤,不管是Spring集成还是SpringBoot集成都是老套路,我就分开总结了,望各位笑纳。
Spring集成PageHelper:
第一步:pom文件引入依赖
com.github.pagehelper pagehelper
第二步:MyBatis的核心配置文件中引入配置项
第三步:业务逻辑实现分页功能,我们只需将当前查询的页数page和每页显示的总条数rows传进去,然后Pagehelper已经帮我们分好数据了,只需在web层获取数据即可。
//分页查询商品列表:
@Override
publicDatagridResultitemList(Integerpage,Integerrows){
//为了程序的严谨性,判断非空:
if(page==null){
page=1;//设置默认当前页
}
if(page<=0){
page=1;
}
if(rows==null){
rows=30;//设置默认每页显示的商品数(因为jsp页面上默认写的就是30条)
}
//1、设置分页信息,包括当前页数和每页显示的总计数
PageHelper.startPage(page,rows);
//2、执行查询
TbItemExampleexample=newTbItemExample();
Listlist=tbItemMapper.selectByExample(example);
//3、获取分页查询后的数据
PageInfopageInfo=newPageInfo<>(list);
//4、封装需要返回的分页实体
DatagridResultresult=newDatagridResult();
//设置获取到的总记录数total:
result.setTotal(pageInfo.getTotal());
//设置数据集合rows:
result.setRows(list);
returnresult;
}
springboot集成PageHelper:
第一步:pom文件还是需要引入依赖
com.github.pagehelper pagehelper 4.1.6
第二步:这次直接是在项目的入口类application.java中直接设置PageHelper插件即可
//配置mybatis的分页插件pageHelper
@Bean
publicPageHelperpageHelper(){
PageHelperpageHelper=newPageHelper();
Propertiesproperties=newProperties();
properties.setProperty("offsetAsPageNum","true");
properties.setProperty("rowBoundsWithCount","true");
properties.setProperty("reasonable","true");
properties.setProperty("dialect","mysql");//配置mysql数据库的方言
pageHelper.setProperties(properties);
returnpageHelper;
}
第三步:同理,使用插件实现分页功能,方式还是一样,只需将当前查询的页数和每页显示的条数穿进去即可,直接o源码
这是需要用到的分页实体,各位可以直接享用。
packagecom.zxz.utils; /** *分页bean */ importjava.util.List; publicclassPageBean{ //当前页 privateIntegercurrentPage=1; //每页显示的总条数 privateIntegerpageSize=10; //总条数 privateIntegertotalNum; //是否有下一页 privateIntegerisMore; //总页数 privateIntegertotalPage; //开始索引 privateIntegerstartIndex; //分页结果 privateList items; publicPageBean(){ super(); } publicPageBean(IntegercurrentPage,IntegerpageSize,IntegertotalNum){ super(); this.currentPage=currentPage; this.pageSize=pageSize; this.totalNum=totalNum; this.totalPage=(this.totalNum+this.pageSize-1)/this.pageSize; this.startIndex=(this.currentPage-1)*this.pageSize; this.isMore=this.currentPage>=this.totalPage?0:1; } publicIntegergetCurrentPage(){ returncurrentPage; } publicvoidsetCurrentPage(IntegercurrentPage){ this.currentPage=currentPage; } publicIntegergetPageSize(){ returnpageSize; } publicvoidsetPageSize(IntegerpageSize){ this.pageSize=pageSize; } publicIntegergetTotalNum(){ returntotalNum; } publicvoidsetTotalNum(IntegertotalNum){ this.totalNum=totalNum; } publicIntegergetIsMore(){ returnisMore; } publicvoidsetIsMore(IntegerisMore){ this.isMore=isMore; } publicIntegergetTotalPage(){ returntotalPage; } publicvoidsetTotalPage(IntegertotalPage){ this.totalPage=totalPage; } publicIntegergetStartIndex(){ returnstartIndex; } publicvoidsetStartIndex(IntegerstartIndex){ this.startIndex=startIndex; } publicList getItems(){ returnitems; } publicvoidsetItems(List items){ this.items=items; } }
分页功能源码(web层和service层)。
@Override publicList- findItemByPage(intcurrentPage,intpageSize){ //设置分页信息,分别是当前页数和每页显示的总记录数【记住:必须在mapper接口中的方法执行之前设置该分页信息】 PageHelper.startPage(currentPage,pageSize); List
- allItems=itemMapper.findAll();//全部商品 intcountNums=itemMapper.countItem();//总记录数 PageBean
- pageData=newPageBean<>(currentPage,pageSize,countNums); pageData.setItems(allItems); returnpageData.getItems(); } /** *商品分页功能(集成mybatis的分页插件pageHelper实现) * *@paramcurrentPage:当前页数 *@parampageSize:每页显示的总记录数 *@return */ @RequestMapping("/itemsPage") @ResponseBody publicList
- itemsPage(intcurrentPage,intpageSize){ returnitemService.findItemByPage(currentPage,pageSize); }
到这儿呢,MyBatis的分页插件PageHelper就完全和SpringBoot集成到一起了,确实没有什么新鲜的,标题有个"回头草"就是这个意思,重点和各位复习一下MyBatis的分页插件的运用,好久没用了正好一块总结一下哈。