spring中pagehelp的使用方法

1):导入相应的Jar包:pagehelper-4.11.jar;jsqlparser-0.9.4.jar

2):修改mybatis.xml配置的信息:

<configuration>

<settings>

<setting name="autoMappingBehavior" value="FULL" />

</settings>

<plugins>

<plugin interceptor="com.github.pagehelper.PageHelper">

<property name="dialect" value="mysql" />//name:不用进行改变;value=mysql你所使用的数据库类型【mysql/oracle

<!-- 该参数默认为false设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 和startPage中的pageNum效果一样-->

<property name="offsetAsPageNum" value="true" />

<!-- 该参数默认为false设置为true时,使用RowBounds分页会进行count查询-->

<property name="rowBoundsWithCount" value="true" />

<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->

<property name="pageSizeZero" value="true" />

<!-- 3.3.0版本可用- 分页参数合理化,默认false禁用 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 禁用合理化时,如果pageNum<1pageNum>pages会返回空数据-->

<property name="reasonable" value="true" />

<!-- 3.5.0版本可用- 为了支持startPage(Object params)方法 增加了一个`params`参数来配置参数映射,用于从MapServletRequest中取值 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值-->

<property name="params"

value="pageNum=start;pageSize=limit;pageSizeZero=zero;reasonable=heli;count=contsql" />

</plugin>

</plugins>

</configuration>

3)使用方法:

数据查询的分页主要出现在查询语句的时候,展示在页面上进行分页;在使用pagehelp的时候,mapper.xmlSQL语句正常写。在cotrel或者action的真正的业务层,遍历的地方加入

例如:

 

PageHelper.startPage(4, 1);//加入分页的限制

List<Sbxx> list = sbxxService.selectSbxx(0,"");//正常遍历数据   mav.addObject("slist", list);//获取分页的数据

【解析】pageHelper的相关方法的解释:

PageHelper.startpage(pagnum,pagesize);//参数的含义Pagenum页码数;pagesize一页中包含的数据量。

SQLselect * from ( select tmp_page.*, rownum row_id from ( select ID, QYMC, XYDM, FDDBR, SKR, KHYH, SKZH, LXR, LXDH, BZJE, STATUS from HZW_SBXX where 1=1 ) tmp_page where rownum <= ? ) where row_id > ?】

实际执行的SQL语句就是有了分页功能的SQL语句PageHelper只对紧跟着的第一个SQL语句起作用

如上:所以若一个方法中涉及到多个查询,需要小心,避免为不需要分页的添加了分页,而真正需要分页的却没有被分页

1)、统计总数,(将SQL语句变为 select count(0) from xxx,只对简单SQL语句其效果,复杂SQL语句需要自己写)

Page<?> page = PageHelper.startPage(1,-1);long count = page.getTotal();

2)、分页,pageNum - 第N页, pageSize - 每页M条数

A、只分页不统计(每次只执行分页语句)

PageHelper.startPage([pageNum],[pageSize]);

List<?> pagelist = queryForList(); //pagelist就是分页之后的结果

B、分页并统计(每次执行2条语句,一条select count语句,一条分页语句)适用于查询分页时数据发生变动,需要将实时的变动信息反映到分页结果上

Page<?> page =PageHelper.startPage([pageNum],[pageSize],[iscount]);

   List<?> pagelist = queryForList();

  long count = page.getTotal(); //也可以 List<?> pagelist = page.getList();获取分页后的结果集

3)、使用PageHelper查全部(不分页)

     PageHelper.startPage(1,0);  List<?> alllist = queryForList();

4)、PageHelper的其他API

   String  orderBy = PageHelper.getOrderBy();  //获取orderBy语句

    Page<?> page   = PageHelper.startPage(Object  params);

    Page<?> page   = PageHelper.startPage(int   pageNum, int pageSize);

    Page<?>  page = PageHelper.startPage(int  pageNum, int pageSize, Boolean  isCount);

Page<?>page=PageHelper.startPage(pageNum, pageSize, orderBy);

Page<?>page=PageHelper.startPage(pageNum,pageSize,isCount,isReasonable);//isReasonable分页合理化,null时用默认配置

Page<?>page=PageHelper.startPage(pageNum,pageSize,isCount,isReasonable,isPageSizeZero);//isPageSizeZero是否支持PageSize为0,true且pageSize=0时返回全部结果,false时分页,null时用默认配置

5)、默认值

Private  boolean  offsetAsPageNum  =  false; //RowBounds参数offset作为PageNum使用 - 默认不使用

Private  Boolean   rowBoundsWithCount  =  false; //RowBounds是否进行count查询 - 默认不查询

//当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果

Private  Boolean   pageSizeZero  =  false;//分页合理化

Private Boolean  reasonable =false;//是否支持接口参数来传递分页参数,默认false

Private Boolean supportMethodsArguments = false;

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值