PageHelper

一、Mybatis分页插件 - PageHelper文档

如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。
该插件目前支持以下数据库的物理分页:
  1. Oracle
  2. Mysql
  3. MariaDB
  4. SQLite
  5. Hsqldb
  6. PostgreSQL
  7. DB2
  8. SqlServer(2005+)
 相关链接
对应于oschub的项目地址:http://git.oschina.net/free/Mybatis_PageHelper
对应于github的项目地址:https://github.com/pagehelper/Mybatis-PageHelper
Mybatis-Sample(分页插件测试项目):http://git.oschina.net/free/Mybatis-Sample
Mybatis项目:https://github.com/mybatis/mybatis-3
Mybatis文档:http://mybatis.github.io/mybatis-3/zh/index.html
Mybatis专栏:
Mybatis示例
Mybatis问题集
作者博客:
http://my.oschina.net/flags/blog
http://blog.csdn.net/isea533
作者QQ: 120807756
作者邮箱: [email protected]


二、使用方法
引入分页插件一共有下面2种方式,推荐使用Maven方式,这种方式方便更新。
1). 引入Jar包
如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的jar即可下载)
  • https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/
  • http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/
由于使用了sql解析工具,你还需要下载jsqlparser.jar(这个文件完全独立,不依赖其他):
  • http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.1/
  • http://git.oschina.net/free/Mybatis_PageHelper/attach_files
2). 使用maven
添加如下依赖:
      com.github.pagehelper
      pagehelper
      3.6.3
当使用maven中央库中的快照版(带 "-SNAPSHOT" 的版本)时,需要在pom.xml中添加如下配置:
     
           sonatype-nexus-snapshots
           Sonatype Nexus Snapshots
           http://oss.sonatype.org/content/repositories/snapshots
          
                false
          
          
                true
          
     
参数说明:
  1. 增加dialect属性,使用时必须指定该属性,可选值为oracle,mysql,mariadb,sqlite,hsqldb,postgresql,sqlserver,没有默认值,必须指定该属性
  2. 增加offsetAsPageNum属性,默认值为false。当该参数设置为true时,使用RowBounds分页时,会将offset参数当成pageNum使用,可以用页码和页面大小两个参数进行分页。
  3. 增加rowBoundsWithCount属性,默认值为false。当该参数设置为true时,使用RowBounds分页会进行count查询。
  4. 增加pageSizeZero属性,默认值为false。当该参数设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是Page类型)。
  5. 增加 reasonable 属性,默认值为 false 。具体作用请看上面配置文件中的注释内容。
  6. 为了支持startPage(Object params)方法,增加了一个params参数来配置参数映射,用于从Map或ServletRequest中取值,可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值。
3). Spring.xml配置
<beanid="sqlSessionFactoryBean"class="org.mybatis.spring.SqlSessionFactoryBean">
          <property name="dataSource" ref="dataSource" />
          <property name="mapperLocations"
               value="classpath:com/atguigu/jf/console/baseapi/*/mapper/*.xml" />
          
          <property name="plugins">
              <array>
                   <bean class="com.github.pagehelper.PageHelper">
                        <property name="properties">
                             <value>
                                  dialect=mysql
                                  params=pageNum=start;pageSize=limit;
                             value>
                        property>
                   bean>
              array>
          property>
     bean>

4). PageInfo封装
虽然官方文档中推荐了几种方式,但是在这里我只推荐一种。
重要:
在你需要进行分页的Mybatis方法前调用 PageHelper.startPage静态方法 即可, 紧跟在这个方法后的第一个Mybatis查询方法会被进行分页。
// 获取第 1 页, 10 条内容,默认查询总数 count
PageHelper .startPage ( 1 , 10 );
List<Country> list = countryMapper .selectAll ();
// PageInfo 对结果进行包装
PageInfo page = new PageInfo(list);
// 测试 PageInfo 全部属性
//PageInfo 包含了非常全面的分页属性
assertEquals( 1 , page .getPageNum ());
assertEquals( 10 , page .getPageSize ());
assertEquals( 1 , page .getStartRow ());
assertEquals( 10 , page .getEndRow ());
assertEquals( 183 , page .getTotal ());
assertEquals( 19 , page .getPages ());
assertEquals( 1 , page .getFirstPage ());
assertEquals( 8 , page .getLastPage ());
assertEquals(true, page .isFirstPage ());
assertEquals(false, page .isLastPage ());
assertEquals(false, page .isHasPreviousPage ());
assertEquals(true, page .isHasNextPage ());
5). 代码
@RequestMapping ( "querySysOpListPageHelper" )
@ResponseBody
public PageInfo querySysOpListPageHelper(SysOp sysOp,  @RequestParam (value = "page" ) int pageNum,  @RequestParam (value = "limit" ) int limit, HttpServletResponse response) throws Exception {
     //1、设置好分页信息,为什么不是start?改为page?注意PageHelper的注释,第一个参数传的是 页码
     PageHelper.startPage( page, limit);
     //2、 调用service的查询方法
     List opList = userService .selectSysOpListPageHelper(sysOp);
     //3、封装为分页对象
     PageInfo page = new PageInfo(opList);
     return page;
}

你可能感兴趣的:(Mybatis,PageHelper)