当前位置: 首页 > 后端技术 > Java

MyBatis分页插件PageHelper

时间:2023-04-02 00:36:31 Java

使用PageHelper分页插件时,首先要添加PageHelper依赖com.github.pagehelperpagehelper-spring-boot-starter1.3.1PageHelper类调用父类的startPage()方法并传递参数获取Page对象。可以通过此对象获取总记录数。Page对图像内部的属性:publicclassPageextendsArrayListimplementsCloseable{privatestaticfinallongserialVersionUID=1L;私有intpageNum;私有intpageSize;私人长开始行;私有长端行;私人长总计;私有int页面;私人布尔计数;私有布尔值合理;私有布尔pageSizeZero;私有字符串计数列;私有字符串顺序;私有布尔orderByOnly;私有BoundSqlInterceptorboundSqlInterceptor;privatetransientChainchain;PageHelper页面插件具体使用如下:@ServicepublicclassSysUserServiceImplimplementsSysUserService{@AutowiredprivateSysUserDaosysUserDao;@OverridepublicPageObjectfindPageObjects(Stringusername,IntegerpageCurrent){intpageSize=5;Pagepage=PageHelper.startPage(pageCurrent,pageSize);Listrecords=sysUserDao.findPageObjects(用户姓名);longrowCount=page.getTotal();返回新的PageObject<>((int)rowCount,records,pageCurrent,pageSize);}}问题分析:在springboot项目中引入com.github。pagehelperpagehelper5.2.0发现分页不生效解决方法:发现是SpringBoot项目依赖的分页插件on与Spring项目不同,需要spring-boot-starter下的包才能使用PageHelper分页原理:底层是基于mybatis拦截器实现的。当我们访问数据库时,MyBatis中使用的SqlSession会话对象,它向服务器发送sql,进行一次会话。发送的时候被拦截器拦截,被拦截的对象就是拦截器。其实PageHelper就是实现了MyBatis中的拦截器接口。然后修改截取的sql语句。缺点:与自己写limit分页查询相比,性能变低。因为需要先添加拦截器,然后再修改sql语句