文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mybatis-Plus实现分页查询

2023-08-17 16:32

关注

Mybatis-Plus实现分页查询

Mybatis-Plus实现分页查询

1.1技术概述

1.2技术详述

1.2.1配置分页插件

spring和mybatis-plus整合

                                                                                

spring boot和mybatis-plus整合

//Spring boot方式@Configuration@MapperScan("mapper包名")public class MybatisPlusConfig {    // 旧版    @Bean    public PaginationInterceptor paginationInterceptor() {        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false        // paginationInterceptor.setOverflow(false);        // 设置最大单页限制数量,默认 500 条,-1 不受限制        // paginationInterceptor.setLimit(500);        // 开启 count 的 join 优化,只针对部分 left join        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));        return paginationInterceptor;    }        // 最新版    @Bean    public MybatisPlusInterceptor mybatisPlusInterceptor() {        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));        return interceptor;    }    }

1.2.2自定义分页

1、如果你的mapper没有继承BaseMapper

UserMapper.java 方法内容

public interface UserMapper {//可以继承或者不继承BaseMapper        IPage selectPageVo(Page page, Integer state);}

UserMapper.xml 等同于编写一个普通 list 查询,mybatis-plus 自动替你分页

UserServiceImpl.java 调用分页方法

public IPage selectUserPage(Page page, Integer state) {    // 不进行 count sql 优化,解决 MP 无法自动优化 SQL 问题,这时候你需要自己查询 count 部分    // page.setOptimizeCountSql(false);    // 当 total 为小于 0 或者设置 setSearchCount(false) 分页插件不会进行 count 查询    // 要点!! 分页返回的对象与传入的对象是同一个    return userMapper.selectPageVo(page, state);}

需要注意的是:
如果返回类型是 IPage 则入参的 IPage 不能为null,因为 返回的IPage == 入参的IPage
如果返回类型是 List 则入参的 IPage 可以为 null(为 null 则不分页),但需要你手动入参的IPage.setRecords(返回的 List);
如果 xml 需要从 page 里取值,需要 page.属性 获取。

流程图:
在这里插入图片描述

2、如果你的mapper继承了BaseMapper

除了上述做法,那你可以使用BaseMapper里声明了的很强大的CRUD方法,可以看下面的例子。

    public BackPage findBackPostList(String tag, int page){        BackPage postBackPage = new BackPage<>();        // 设置条件构造器        QueryWrapper wrapper = new QueryWrapper<>();        wrapper.like("post_title", tag);        wrapper.eq("is_check", NOT_CHECKED);        // 构造分页信息,其中的Page<>(page, PAGE_RECORDS_NUM)的第一个参数是页数,而第二个参数是每页的记录数        Page postPage = new Page<>(page, PAGE_RECORDS_NUM);        // page(postPage, wrapper)这里的第一个参数就是上面定义了的Page对象,第二个参数就是上面定义的条件构造器对象,通过调用这个方法就可以根据你的分页信息以及查询信息获取分页数据        IPage postIPage = page(postPage, wrapper);        // 封装数据,其中getRecords()是获取记录数,getCurrent()获取当前页数,getPages()获取总页数,getTotal()获取记录总数,还要其他更多的方法,大家可以自行查看,在这里就不过多赘述了        postBackPage.setContentList(postIPage.getRecords());        postBackPage.setCurrentPage(postIPage.getCurrent());        postBackPage.setTotalPage(postIPage.getPages());        postBackPage.setTotalNum(postIPage.getTotal());        return postBackPage;    }

其中的BackPage以及Post是我为了封装查询数据写的实体类,大家根据自己的需求来选择就好了。

public class BackPage {    private static final long serialVersionUID=1L;        private long totalPage;        private long currentPage;        private long totalNum;        private List contentList;}

流程图:
在这里插入图片描述

1.3技术使用中遇到的问题和解决过程

         List selectPage(RowBounds rowBounds, Wrapper wrapper);

1.4总结

如果你使用了Mybatis-Plus,并且有需要用到分页的功能,可以考虑Mybatis-Plus的分页插件,只需要简单的配置就可以使用,是个不错的选择。

参考文献
https://www.cnblogs.com/FZU-TKQ/p/14944506.html
我是在写项目中想起来了分页查询,以前学过,但是有点忘了,这篇博客园的文章真心不错,让我想起很多知识点。强烈推荐去看看。
加油叭!程序猿!

来源地址:https://blog.csdn.net/lj20020302/article/details/129739505

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯