Mybatis pagehelper分页插件使用过程解析

 更新时间:2020年02月12日 10:56:13   作者:小白coder  
这篇文章主要介绍了mybatis pagehelper分页插件使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了mybatis pagehelper分页插件使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

使用过mybatis的人都知道,mybatis本身就很小且简单,sql写在xml里,统一管理和优化。缺点当然也有,比如我们使用过程中,要使用到分页,如果用最原始的方式的话,1.查询分页数据,2.获取分页长度,也就是说要使用到两个方法才能完成分页。有没有更更好的分页方式的,pagehelper分页插件因此而诞生,他的原理是利用mybatis拦截器,在查询数据库的时候,拦截下SQL,然后进行修改,从而实现分页(如果你硬是想知道原理,mybatis拦截器,学习过后你就知道什么回事了)。

这篇博客先向大家展示怎么使用,过后有时间再讲他的实现原理。

1.添加maven依赖

 <dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
  <version>5.0.0</version>
 </dependency>

2.在 Spring 配置文件中配置拦截器插件,也可以在mybatis的xml里面配置,但是两种配置不能同时出现,否则容易出现com.github.pagehelper.PageInterceptor插件出现空指针问题

在spring.xml中定义:

<!--配置SqlSessionFactory对象 -->
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:mybatis-config.xml" />
    <property name="typeAliasesPackage" value="com.aoChine.model.entity" />
    <property name="mapperLocations" value="classpath:mapper/*.xml" />

    <!-- 配置mybatis分页插件PageHelper -->
    <property name="plugins">
      <array>
        <bean class="com.github.pagehelper.PageInterceptor">
          <property name="properties">
            <!-- 什么都不配,使用默认的配置 -->
            <value></value>
          </property>
        </bean>
      </array>
    </property>
  </bean>

在mybatis-config.xml中定义

<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
      <!-- 使用MySQL方言的分页 -->
      <property name="helperDialect" value="sqlserver"/><!--如果使用mysql,这里value为mysql-->
      <property name="pageSizeZero" value="true"/>
    </plugin>
 </plugins>

3.使用

a)写正常查询语句的接口

接口:

b)在service层调用接口,实现分页。

分页插件使用这样就使用完毕了,博客只是介绍了最简单的使用方法,如果需要了解更多内容

这个是开源社区上面的插件库地址:

https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 23种设计模式(11)java策略模式

    23种设计模式(11)java策略模式

    这篇文章主要为大家详细介绍了23种设计模式之java策略模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Java如何使用itext向PDF插入数据和图片

    Java如何使用itext向PDF插入数据和图片

    最近项目中使用到Java实现写入PDF文件,这篇文章主要给大家介绍了关于Java如何使用itext向PDF插入数据和图片的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • springboot+chatgpt+chatUI Pro开发智能聊天工具的实践

    springboot+chatgpt+chatUI Pro开发智能聊天工具的实践

    本文主要介绍了springboot+chatgpt+chatUI Pro开发智能聊天工具的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 解决Maven中的依赖导包问题(组合技巧)

    解决Maven中的依赖导包问题(组合技巧)

    自从我开始接触了以spring为框架的项目学习后,这个maven导包老是出现问题,每次在这个上面花费好多时间,于是乎打算写一个秘籍出来,这篇文章主要介绍了解决Maven中的依赖导包问题,需要的朋友可以参考下
    2023-11-11
  • Java中Stringbuilder和正则表达式示例详解

    Java中Stringbuilder和正则表达式示例详解

    Java语言为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串,字符串连接是通过StringBuilder(或StringBuffer)类及其append方法实现的,这篇文章主要给大家介绍了关于Java中Stringbuilder和正则表达式的相关资料,需要的朋友可以参考下
    2024-02-02
  • 一文秒懂springboot druid 配置

    一文秒懂springboot druid 配置

    Druid是阿里巴巴开发的一个连接池,他提供了一个高效、功能强大、可扩展性好的数据库连接池,区别于hikari,今天通过本文给大家分享springboot druid 配置教程,需要的朋友参考下吧
    2021-08-08
  • 详谈Enumeration接口和Iterator接口的区别

    详谈Enumeration接口和Iterator接口的区别

    下面小编就为大家带来一篇详谈Enumeration接口和Iterator接口的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • java虚拟机之JVM调优详解

    java虚拟机之JVM调优详解

    这篇文章主要介绍了java虚拟机之JVM调优详解,文中有非常详细的代码示例,对正在学习Java虚拟机的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java Netty核心模块超详细梳理

    Java Netty核心模块超详细梳理

    Netty是一个java开源项目,是一个异步的、基于事件驱动的网络应用框架,用以开发高性能、高可用的网络io程序,这篇文章主要介绍了Netty核心模块
    2022-11-11
  • 浅谈一下Java中的堆和栈

    浅谈一下Java中的堆和栈

    这篇文章主要介绍了一下Java中的堆和栈,Java数据类型在执行过程中存储在两种不同形式的内存中:栈和堆,它们通常由运行Java虚拟机(JVM)的底层平台维护,需要的朋友可以参考下
    2023-04-04

最新评论