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是否存在下一页等。

最新文章

  1. Jetty使用教程(四:23)—Jetty开发指南
  2. P1220 关路灯
  3. mac本用WTG(Windows To Go)安装Win10到移动硬盘
  4. 【转】一个非常常见但容易被忽略的c++问题——用IPML模式可以解决
  5. java连接各种数据库代码大全
  6. [翻译] - &lt;Entity Framework&gt; - 直接执行数据库命令
  7. C#获取千分位,给数字加逗号分隔符
  8. 花了一年时间开发的TTF2FNT字库转换软件
  9. 用UE4来做Zego即构的房间列表
  10. KITTI数据集的使用——雷达与相机的数据融合
  11. windows7,python3使用time.strftime()函数报ValueError: embedded null byte
  12. python基础 - 变量与运算符
  13. 调试 shell script 方法
  14. nginx深入剖析
  15. 2019年春季学期《C语言程序设计II》助教注意事项
  16. 反射调用 java bean的set和get方法
  17. pthread编译时报错的解决方法
  18. H5实现页面内跳转页面
  19. 剑指offer:替换空格
  20. c# 执行 CreateHandle() 时无法调用值 Dispose()

热门文章

  1. POJ3621:Sightseeing Cows——题解
  2. BZOJ1031:[JSOI2007]字符加密——题解
  3. POJ.2387 Til the Cows Come Home (SPFA)
  4. 搞笑的代码 ( funny )
  5. PHP汉字转拼音
  6. 关于JavaScript的push()函数
  7. jsp弹出新窗口代码
  8. selenium测试-open chrome
  9. Codeforces Round #547 (Div. 3) 题解
  10. java重写equals和hashCode方法