Mybatis分页有几种方法:
(1)可以直接使用limit语句,在sql语句中使用#{}进行占位,传入的参数调用DAO进行在数据库层面的分页操作
(2)使用mybatis提供的PageHelper第三方插件,通过调用PageHelper的静态方法startPage(current,size),两个参数前面是具体展示第几页,第二个是展示的页码,在Springboot导入依赖并在yml文件中配置,如果是Spring导入的插件则需要在spring配置文件或者mybatis配置文件中书写插件参数,在进行方法调用时先调用静态方法,底层会使用Threadlocal和拦截器,然后执行自己在dao层定义好的selectAll方法,将selectAll查询结果传入PageInfo类的对象中(作为形参),最后返回PageInfo对象即分好页的对象,注意PageInfo对象中有很多的属性,是由分页插件内部计算出来的各种参数
1 2 3 4 5 6 7
| @Override public PageBean selectPageByExample(E example) throws BaseException { PageHelper.startPage(PaginationContext.getPageNum(), PaginationContext.getPageSize()); List<M> list = getDao().selectByExample(example); return new PageBean<M>(list); }
|
(3)使用mp,直接实现Basemapper接口,调用mp的APi:selectPage(查询页面,有两个形参,这里是IPage对象和queryWapper查询条件),Basemapper提供了众多的基本方法,不需要像原来一样进行自定义,比如selectbyid,updatebyid等等
使用方法:直接调用Dao接口(该接口继承了BaseMapper)注入对象的selectPage方法,该方法传入两个形参,而IPage有是一个接口,所以使用他的实现类对象Page类,Page直接new出来,构造方法传入current和size,接着将page和querywapper传入即可
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 29
|
@Override public PageResult getUserList(PageResult pageResult) { IPage iPage = new Page(pageResult.getPageNum(), pageResult.getPageSize()); QueryWrapper queryWrapper = new QueryWrapper(); boolean flag = StringUtils.hasLength(pageResult.getQuery()); queryWrapper.like(flag, "username", pageResult.getQuery()); iPage = userMapper.selectPage(iPage,queryWrapper); long total = iPage.getTotal(); List<User> rows = iPage.getRecords(); return pageResult.setTotal(total).setRows(rows); }
|
然后需要将分页拦截器加入到Mybatis拦截器中才能使分页生效,代码如下:
先创建一个MybatisPlusInterceptor,再将PaginationInnerInterceptor加到其中
别忘了加@Configuration,或者在spring启动类上加入Import制定具体的配置类,不然配置类扫描不到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @Configuration public class MybatisPlusConfig {
@Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MARIADB)); return interceptor; } }
|
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !