zoukankan      html  css  js  c++  java
  • mybatis 分页插件PageHelper的简单使用

    分页方式的分类:

    • 逻辑分页
    • 物理分页

    MyBatis-PageHelper 的使用:

     <dependency>
    2             <groupId>com.github.pagehelper</groupId>
    3             <artifactId>pagehelper</artifactId>
    4             <version>5.1.7</version>
    5         </dependency>

     新建一个mybatis-config.xml 的文件:

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
     3 
     4 <configuration>
     5     <settings>
     6         <!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->
     7         <setting name="useGeneratedKeys" value="true" />
     8         <!-- 使用列别名替换列名 默认:true -->
     9         <setting name="useColumnLabel" value="true" />
     10         <!-- 开启驼峰命名转换:Table {create_time} -> Entity {createTime} -->
     11         <setting name="mapUnderscoreToCamelCase" value="true" />
     12     </settings>
     13     <!--配置分页插件-->
     14     <plugins>
     15         <plugin interceptor="com.github.pagehelper.PageInterceptor" />
     16     </plugins>
     17 
     18 </configuration>

    加载mybatis-config.xml文件。

    调用:

    调用PageHelper插件的方法,它只会对下面的一行代码起作用。

    第一个参数是页数,第二个参数是条数,简单来说就是每一页有几条数据。

    1、这是一种物理分页(就是直接通过SQL进行在数据库中直接分页,得到的数据就是我们想要分页之后的数据),假设你使用的是mysql数据库,在执行查询语气的时候,它会自动的在sql语法后面加 limit 

     物理分页:内存开销比较小,在数据量比较小的情况下效率比逻辑分页还是低,在数据量很大的情况下,建议使用物理分页

    测试:

    select 语法:

    测试类:

    打印出来的日志:

    (通过日志,第4行,我们可以看出,当我们使用PageHelper.startPage这种物理方法的时候,它是自动在我调用的select后面加上了limit进行了分页查询)

    复制代码
    1 09:05:37.911 [main] DEBUG com.oukele.dao.CommodityMapper.selectAll_COUNT - ==>  Preparing: SELECT count(0) FROM commodity c LEFT JOIN stock s ON c.stock_id = s.stock_id LEFT JOIN commodity_company cp ON c.commodity_company_id = cp.commodity_company_id 
    2 09:05:37.943 [main] DEBUG com.oukele.dao.CommodityMapper.selectAll_COUNT - ==> Parameters: 
    3 09:05:38.142 [main] DEBUG com.oukele.dao.CommodityMapper.selectAll_COUNT - <==      Total: 1
    4 09:05:38.145 [main] DEBUG com.oukele.dao.CommodityMapper.selectAll - ==>  Preparing: select * from commodity c left join stock s on c.stock_id = s.stock_id left join commodity_company cp on c.commodity_company_id=cp.commodity_company_id LIMIT ? 
    5 09:05:38.146 [main] DEBUG com.oukele.dao.CommodityMapper.selectAll - ==> Parameters: 3(Integer)
    6 09:05:38.230 [main] DEBUG com.oukele.dao.CommodityMapper.selectAll - <==      Total: 3
    复制代码
  • 相关阅读:
    敏捷思维-架构设计中的方法学(12)Refactoring
    敏捷思维-架构设计中的方法学(11)精化和合并
    敏捷思维-架构设计中的方法学(8)架构愿景
    敏捷思维-架构设计中的方法学(10)分层 (下)
    Agile 敏捷建模思想 作者:林星
    敏捷思维-架构设计中的方法学(9)分层 (上)
    敏捷思维-架构设计中的方法学(13)稳定化
    敏捷思维-架构设计中的方法学(15)进一步阅读
    hdu 1829+hdu 1856(并查集)
    hdu 1050+hdu 1789+hdu 3177(贪心)
  • 原文地址:https://www.cnblogs.com/nongzihong/p/10069208.html
Copyright © 2011-2022 走看看