zoukankan      html  css  js  c++  java
  • Mybatis学习 PageHelper分页插件

    1、Maven依赖,注意使用PageHelper时的版本必须与Mybatis版本对应

    复制代码
     1         <!-- 添加Mybatis依赖 -->
     2         <dependency>
     3             <groupId>org.mybatis</groupId>
     4             <artifactId>mybatis</artifactId>
     5             <version>3.3.0</version>
     6         </dependency>
     7         <dependency>
     8             <groupId>org.mybatis</groupId>
     9             <artifactId>mybatis-spring</artifactId>
    10             <version>1.2.3</version>
    11         </dependency>
    12         <!-- pageHelper -->
    13         <dependency>
    14             <groupId>com.github.pagehelper</groupId>
    15             <artifactId>pagehelper</artifactId>
    16             <version>4.1.4</version>
    17         </dependency>
    复制代码

    2、需要在Mybatis的配置信息中使用PageHelper插件,mybatis-config.xml

    复制代码
     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <!DOCTYPE configuration
     3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 
     6 <configuration>
     7     <plugins>
     8         <plugin interceptor="com.github.pagehelper.PageHelper">
     9             <!--指明数据库 4.0.0以后不需要设置此属性-->
    10             <property name="dialect" value="mysql"/>
    11             <!-- 该参数默认为false -->
    12             <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
    13             <!-- 和startPage中的pageNum效果一样-->
    14             <property name="offsetAsPageNum" value="true"/>
    15             <!-- 该参数默认为false -->
    16             <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
    17             <property name="rowBoundsWithCount" value="true"/>
    18             <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
    19             <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
    20             <property name="pageSizeZero" value="true"/>
    21             <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
    22             <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
    23             <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
    24             <property name="reasonable" value="true"/>
    25             <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
    26             <!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
    27             <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
    28             <!-- 不理解该含义的前提下,不要随便复制该配置 -->
    29             <property name="params" value="pageNum=start;pageSize=limit;"/>
    30             <!-- 支持通过Mapper接口参数来传递分页参数 -->
    31             <property name="supportMethodsArguments" value="true"/>
    32             <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
    33             <property name="returnPageInfo" value="check"/>
    34         </plugin>
    35     </plugins>
    36 </configuration>
    复制代码

    3、在配置Spring配置文件中,配置Mybatis的SqlSessionFactory时,需要把mybatis-config.xml添加到属性中

    复制代码
    1     <!-- SqlSessionFactory -->
    2     <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    3         <!--设置数据源-->
    4         <property name="dataSource" ref="dataSource"></property>
    5         <!--设置映射文件-->
    6         <property name="mapperLocations" value="classpath:mybatis/sqlmap/mapper/*.xml"></property>
    7         <!--设置pageHelper-->
    8         <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property>
    9     </bean>
    复制代码

    4、使用Mybatis的mapper接口进行查询,在查询时,需要使用PageHelper.startPage方法,,传入pagenum当前页,pagesize每页大小数

    复制代码
     1     @Test
     2     public void testSelectAll() {
     3         Page<Doctor> page = PageHelper.startPage(1, 3);
     4         //selectAll查询出的List即为上面定义的page
     5         doctorMapper.selectAll();
     6         //注意:
     7         //使用PageHelper.startPage只是针对接下来的一条查询语句,
     8         //如果又查询了一次数据,则还需要使用一次PageHelper.startPage
     9         logger.info("获取所有Doctor信息,获得记录数:{}", page.size());
    10         logger.info("获取所有Doctor信息,获得记录:{}", page);
    11         //使用PageInfo封装
    12         PageInfo<Doctor> info = new PageInfo<Doctor>(page);
    13         logger.info("info.getPages:{}",info.getPages());
    14     }
    复制代码

    5、Page对象继承了ArrayList,因此在使用了PageHelper.startPage之后,Page即为查询到的数据,并且在Page中还额外封装了pageNum,pageSize等属性,还可以使用PageInfo封装Page,PageInfo中有更多的分页属性,例如isFirstPage是否为首页、isLastPage是否为末尾、hasNextPage是否存在下一页等。

  • 相关阅读:
    HTML DOM教程 14HTML DOM Document 对象
    HTML DOM教程 19HTML DOM Button 对象
    HTML DOM教程 22HTML DOM Form 对象
    HTML DOM教程 16HTML DOM Area 对象
    ubuntu 11.04 问题 小结
    VC6.0的 错误解决办法 小结
    boot.img的解包与打包
    shell里 截取字符串
    从零 使用vc
    Imagemagick 对图片 大小 和 格式的 调整
  • 原文地址:https://www.cnblogs.com/GotoJava/p/6858540.html
Copyright © 2011-2022 走看看