前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot整合分页插件

SpringBoot整合分页插件

作者头像
爱撒谎的男孩
发布于 2020-03-12 14:44:16
发布于 2020-03-12 14:44:16
1.5K00
代码可运行
举报
文章被收录于专栏:码猿技术专栏码猿技术专栏
运行总次数:0
代码可运行

导读

  • 很久以前的项目分页查询的话大概会用limit,如果要统计总数还需要使用count,总之大多数情况下都是很麻烦的一件事,特别是使用Mybatis。
  • 分页插件确实解放了我们的双手,不用再写重复的sql,利用mybatis的插件的原理帮我们解决了系列问题。

SpringBoot整合

  • SSM的整合这里就不再说了,相信现在大部分公司都在使用SpringBoot,当然万变不离其中,你会了SSM的整合,SpringBoot当然不在话下了。

整合之前

开干

  • 添加Maven依赖
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--mybatis分页插件-->
      <dependency>
          <groupId>com.github.pagehelper</groupId>
          <artifactId>pagehelper</artifactId>
          <version>5.1.6</version>
      </dependency>
  • 自定义一个配置类,如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @Description 分页插件的参数
 * @Author CJB
 * @Date 2020/3/11 9:48
 */
@ConfigurationProperties(prefix = "mybatis.page")
@Data
public class PageHelperProperties  {
    /**
     * 分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:
     * oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby
     */
    private String helperDialect;

    /**
     * 是否进行count查询,默认是true,查询
     * 如果设置为false,那么总数total将会为-1,不进行count查询
     */
    private Boolean countSql=true;
    /**
     * 分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
     */
    private Boolean reasonable=false;
    /**
     * 默认值为 false,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit = 0 就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是 Page 类型)。
     */
    private Boolean pageSizeZero=false;

}
  • 向Mybatis注入插件,查看MybatisAutoConfiguration的源码可以看出,直接向IOC注入Intercept即可,不需要重新注入SqlSessionFactory了,如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Configuration
@EnableConfigurationProperties(value = {PageHelperProperties.class})
public class MybatisConfig {

    private PageHelperProperties pageHelperProperties;

    public MybatisConfig(ObjectProvider<PageHelperProperties> objectProvider){
        this.pageHelperProperties=objectProvider.getIfUnique();
    }

    /**
     * 注入分页插件,springBoot会将注入的插件自动设置到sqlSessionFactory中
     */
    @Bean
    public Interceptor interceptor(){
        PageInterceptor pageInterceptor = new PageInterceptor();
        //加载配置
        Properties properties = new Properties();
        //方言不设置可以自动选择
        if (StringUtils.isNotBlank(pageHelperProperties.getHelperDialect()))
            properties.setProperty("helperDialect",pageHelperProperties.getHelperDialect());
        properties.setProperty("countSql", String.valueOf(pageHelperProperties.getCountSql()));
        properties.setProperty("reasonable",pageHelperProperties.getHelperDialect());
        properties.setProperty("pageSizeZero",pageHelperProperties.getHelperDialect());
        //设置参数
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }
}
  • 如果需要改变参数,直接在全局配置文件中直接修改即可,如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mybatis:
  page:
    helperDialect: mysql
    countSql: true
    reasonable: false
    pageSizeZero: false
  • 自定义分页的工具类,如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class PageUtils {
    /**
     * 此处pageNum和pageSize直接作为参数,这里就不封装了,自己可以根据条件封装一下
     * @param pageNum
     * @param pageSize
     * @param iSelect
     * @param <T>
     * @return
     */
    public static <T>PageData<T> getPageInfo(Integer pageNum,Integer pageSize,ISelect iSelect){
        PageInfo<Object> pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(iSelect);
        PageData<T> data = new PageData<>();
        BeanUtils.copyProperties(pageInfo,data);
        return data;
    }

}
  • 好了,整合结束,简单使用下,如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PageUtils.getPageInfo(req.getPageNum(),req.getPageSize(),()->articleMapper.selectAll());

装xx开始

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
原 spring boot 整合mybat
srping boot 与mybatis的整合就不在贴代码了,请看我以前的整和文章: https://my.oschina.net/bianxin/blog/1602958 我的Spring Boot 版本:1.5.9 我的mybatis分页插件pagehelper版本:5.1.2 我在开始整合的时候,还是用的5.0以前的整合方式: @Bean(name = "sqlSessionFactory") public SqlSessionFactory sqlSessionFactory(DataSourc
kinbug [进阶者]
2018/06/13
1.1K0
SpringBoot整合分页插件PageHelper
在springboot中使用PageHelper插件有两种较为相似的方式,接下来我就将这两种方式进行总结。官方使用说明
zpzp6
2023/03/23
1.4K0
SpringBoot集成MyBatis的分页插件PageHelper(回头草)
       俗话说:好?不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper。               昨天给各位总结了本人学习springbo
赵小忠
2018/01/24
3.8K0
SpringBoot+Mybatis+PageHelper实现分页
mybatis自己没有分页功能,我们可以通过PageHelper工具来实现分页,非常简单方便
用户2409797
2019/02/25
4.4K0
springboot整合mybatis分页插件PageHelper实战
https://www.cnblogs.com/xifengxiaoma/p/11027551.html
全栈程序员站长
2022/11/03
1.5K0
PageHelper的前世今生
记得之前在参加面试的时候,有个面试官给我提了一个问题:请说一下PageHelper分页插件的底层原理。当听到这个问题的时候既熟悉又陌生,熟悉是因为平时都在使用它,熟的不能再熟了;陌生是因为只停留在用的阶段,却没有沉下心来仔细研究,以至于手足无措。不知道手机前的你是否能准确地描述出来呢?今天就让我们来认识一下它吧(此处附上官网地址:https://pagehelper.github.io/)
阿Q说代码
2021/05/13
8550
PageHelper的前世今生
SpringBoot使用pageHelper分页插件【面试+工作】
可能有些不太详细,具体可以参考插件作者的文档哦。 https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
Java帮帮
2018/09/29
1.8K0
SpringBoot使用pageHelper分页插件【面试+工作】
Spring Boot入门系列(十六)整合pagehelper,一秒实现分页功能!
之前讲了Springboot整合Mybatis,然后介绍了如何自动生成pojo实体类、mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能。接下来要说一说Mybatis 的分页功能:使用Mybatis-PageHelper插件,实现分页功能。
章为忠学架构
2020/07/27
15.7K0
SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页
本篇文章主要讲述的是SpringBoot整合Mybatis、Druid和PageHelper 并实现多数据源和分页。其中SpringBoot整合Mybatis这块,在之前的的一篇文章中已经讲述了,这里就不过多说明了。重点是讲述在多数据源下的如何配置使用Druid和PageHelper 。
田维常
2019/07/16
9870
SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页
Spring boot Mybatis-XML方式分页查询PageHelper(五)
PageHelper介绍 PageHelper是Github上有位开发者写了一个分页插件,可以很方便的添加到MyBatis的拦截器接口中。 Github项目地址 pom.xml添加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.0</version> </dependency> 配置文件编写 @Configur
楠楠
2018/09/11
3.3K0
Spring boot Mybatis-XML方式分页查询PageHelper(五)
Spring Boot2.0 整合mybatis、分页插件、druid
本文主要是针对SpringBoot2.0.2版本,实现整合mybatis、分页插件、druid等组件,实现完整的web服务,提供restful风格接口。
kinbug [进阶者]
2019/03/12
2.3K0
Spring Boot2.0 整合mybatis、分页插件、druid
Spring Boot 2.x(十三):你不知道的PageHelper
说起PageHelper,使用过Mybatis的朋友可能不是很陌生,作为一款国人开发的分页插件,它基本上满足了我们的日常需求。但是,我想去官方文档看看这个东西配合Spring Boot进行使用的时候,发现了这个:
山禾说
2019/03/19
1.1K0
Spring Boot 2.x(十三):你不知道的PageHelper
Spring Boot:实现MyBatis分页
想必大家都有过这样的体验,在使用Mybatis时,最头痛的就是写分页了,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真的不想花双倍的时间写 count 和 select,幸好我们有 pagehelper 分页插件,pagehelper 是一个强大实用的 MyBatis 分页插件,可以帮助我们快速的实现MyBatis分页功能,而且pagehelper有个优点是,分页和Mapper.xml完全解耦,并以插件的形式实现,对Mybatis执行的流程进行了强化,这有效的避免了我们需要直接写分页SQL语句来实现分页功能。那么,接下来我们就来一起体验下吧。
朝雨忆轻尘
2019/06/19
2.1K0
Spring Boot:实现MyBatis分页
十二、MyBatis分页插件
在查询功能之前使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能
刘大猫
2025/02/08
2180
最简洁的分页插件PageHelper
大部分后台管理项目,用的最多的展现方式是列表显示,所以我把列表查询中的分页插件拿出来写一下,方便以后写代码的时候直接复制粘贴。在我们最熟悉的springboot微服务开发中,持久型框架mybatis使用PageHelper还是比较方便的。下面我们来看一下分页插件PageHelper的简单使用方法。
十分钟空间
2022/08/17
1.3K0
Springboot Mybatis使用pageHelper实现分页查询[通俗易懂]
以下介绍实战中数据库框架使用的是mybatis,对整合mybatis此处不做介绍。
全栈程序员站长
2022/09/05
3.8K0
Springboot Mybatis使用pageHelper实现分页查询[通俗易懂]
30.MyBatis插件原理与Spring集成
myBatis启动时扫描<plugins>标签,注册到Configuration对象的InterceptorChain中。通过setProperties将参数放到property里。
编程之心
2020/08/12
7050
30.MyBatis插件原理与Spring集成
使用idea实现springboot Mybatis 整合(springboot 2.x)
本来这篇博文老在就写好了,但是后来发现很多功能其实根本就没有检验通过就发出来了,导致遗留了很多坑,比如最难搞的就是SqlSessionFactory和PageHelper,之前写过关于springboot1.5.6版本的整合,这段时间刚好springboot发布了2.0的正式版本,很多同学可能没有注意版本,导致了整合的时候出现了很多很多的问题,这几天刚好有空就试着整合一下springboot2.0 mybatis,发现了很多很多的坑,而且网上的资源也不多,终于在两天的踩坑中成功整合了,并且将翻页功能修复好了,废话不多说了,看代码:
凯哥Java
2019/06/30
1.4K0
开源MyBatis分页插件,省时省力
如何能让自己在使用Mybatis时事半功倍?让自己效率提升释放时间?那么就一定要看看今天TJ君给你介绍的这款Mybatis通用分页开源插件:
程序猿DD
2021/12/01
6710
带你学习最简单的分页插件PageHelper
PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库, 例如mysql、 oracle、mariaDB、 DB2、 SQLite、Hsqldb等。今天墨白就给大家聊聊PageHelper这款分页插件,下面是PageHelper开源地址,感兴趣的小伙伴可以去看一下
框架师
2019/11/10
9270
相关推荐
原 spring boot 整合mybat
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档