Mybatis分页插件PageHelper的配置和简单使用方法(推荐)

  

  

在网络开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页。

  

<强>前端分页

  

一次性请求数据表格中的所有记录(ajax),然后在前端缓存并且计算数和分页逻辑,一般前端组件(例如dataTable)会提供分页动作。

  

特点是:简单,很适合小规模的web平台,当数据量大的时候会产生性能问题,在查询和网络传输的时间会很长。

  

<强>后端分页

  

在ajax请求中指定页码(pageNum)和每页的大小(页大小),后端查询出当页的数据返回,前端只负责渲染。

  

特点是:复杂一些;性能瓶颈在MySQL的查询性能,这个当然可以调优解决。一般来说,网页开发使用的是这种方式。

  

我们说的也是后端分页。

  

  

简单来说MySQL对分页的支持是通过限制子句。请看下面的例子。

  

限制关键字的用法是

        限制(抵消)行      

抵消是相对于首行的偏移量(首行是0),行是返回条数。

        #每页10条记录,取第一页,返回的是前10条记录   select * from为多极限0,10;   #每页10条记录,取第二页,返回的是第11条记录,到第20条记录,   select * from为多限制10、10;      

这里提一嘴的是,MySQL在处理分页的时候是这样的:

  

1000年限制,10 -过滤出1010条数据,然后丢弃前1000条,保留10条。当偏移量大的时候,性能会有所下降。

  

100000年限制,10 -会过滤10 w + 10条数据,然后丢弃前10 w条。如果在分页中发现了性能问题,可以根据这个思路调优。

  

  

在使用Java春天开发的时候,Mybatis算是对数据库操作的利器了。不过在处理分页的时候,Mybatis并没有什么特别的方法,一般需要自己去写限制子句实现,成本较高。好在有个PageHelper插件。

  

<强> 1,POM依赖

  

Mybatis的配置就不多提了.PageHelper的依赖如下。需要新的版本可以去maven上自行选择

        & lt; dependency>   & lt; groupId> com.github.pagehelper   & lt; artifactId> pagehelper   & lt; version> 4.1.4   & lt;/dependency>   
     

<强> 2,Mybatis对PageHelper的配置

  

打开Mybatis配置文件,一般在资源路径下。我这里叫mybatis-config.xml。

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt; !DOCTYPE配置公共”——//mybatis.org//DTD配置3.0//EN”“http://mybatis.org/dtd/mybatis-3-config.dtd”的在   & lt; configuration>   & lt; !——全局参数——比;   & lt; settings>   & lt; !——使全局的映射器启用或禁用缓存。——比;   & lt;设置name=" cacheEnabled " value=" https://www.yisu.com/zixun/true "/比;   & lt; !——全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。——比;   & lt;设置name=" lazyLoadingEnabled " value=" https://www.yisu.com/zixun/true "/比;   & lt; !——当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否,则每种属性将会按需要加载。——比;   & lt;设置name=" aggressiveLazyLoading " value=" https://www.yisu.com/zixun/true "/比;   & lt; !——是否允许单条sql返回多个数据集(取决于驱动的兼容性)默认值:真正的——比;   & lt;设置name=" multipleResultSetsEnabled " value=" https://www.yisu.com/zixun/true "/比;   & lt; !——是否可以使用列的别名(取决于驱动的兼容性)默认值:真正的——比;   & lt;设置name=" useColumnLabel " value=" https://www.yisu.com/zixun/true "/比;   & lt; !——允许JDBC生成主键。需要驱动器支持。如果设为了真的,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。默认值是错误的——比;   & lt;设置name=" useGeneratedKeys " value=" https://www.yisu.com/zixun/true "/比;   & lt; !——指定MyBatis如何自动映射数据基表的列没有:不隐射偏:部分完整:全部——比;   & lt;设置name=" autoMappingBehavior " value=" https://www.yisu.com/zixun/PARTIAL "/比;   & lt; !——这是默认的执行类型(简单:简单,重用:执行器可能重复使用准备好的语句语句;批:执行器可以重复执行语句和批量更新)——比;   & lt;设置name=" defaultExecutorType " value=" https://www.yisu.com/zixun/SIMPLE "/比;   & lt; !——使用驼峰命名法转换字段。——比;   & lt;设置name=" mapUnderscoreToCamelCase " value=" https://www.yisu.com/zixun/true "/比;   & lt; !——设置本地缓存范围会话:就会有数据的共享声明:语句范围(这样就不会有数据的共享)defalut:会话——比;   & lt;设置name=" localCacheScope " value=" https://www.yisu.com/zixun/SESSION "/比;   & lt; !——设置但JDBC类型为空时,某些驱动程序要指定值,默认值:,插入空值时不需要指定类型——比;   & lt;设置name=" jdbcTypeForNull " value=" https://www.yisu.com/zixun/NULL "/比;   & lt;/settings>   & lt; plugins>   & lt;插件拦截=癱om.github.pagehelper.PageHelper”比;   & lt;属性名="方言" value=" https://www.yisu.com/zixun/mysql "/比;   & lt;属性名=" offsetAsPageNum " value=" https://www.yisu.com/zixun/false "/比;   & lt;属性名=" rowBoundsWithCount " value=" https://www.yisu.com/zixun/false "/比;   & lt;属性名=" pageSizeZero " value=" https://www.yisu.com/zixun/true "/比;   & lt;属性名="合理" value=" https://www.yisu.com/zixun/false "/比;   & lt;属性名=" supportMethodsArguments " value=" https://www.yisu.com/zixun/false "/比;   & lt;属性名=" returnPageInfo " value=" https://www.yisu.com/zixun/none "/比;   & lt;/plugin>   & lt;/plugins>   & lt;/configuration>

Mybatis分页插件PageHelper的配置和简单使用方法(推荐)