Mybatis 的分页插件 PageHelper

 
我用的版本是PageHelper-4.1.1Mybatis-3.3.0
PageHelper 依赖于 jsqlparser-0.9.4.jar
 
使用方法:
1、根据Mybatis的版本下载对应版本的PageHelper ( Mybatis最低版本不能低于3.3 )
2、在Mybatis的配置文件 Mybatis-Configu.xml中配置PageHelper插件,配置示例:
   plugins插件的配置在 settings之后 在environments之前
   settings中设置Mybatis的一些额外的运行参数 如是否开启延迟加载,动态代理使用CG-LIB,或JAVALIB等
    <plugins>
         <!-- PageHelper4.1.1 --> 
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="oracle"/>
            <property name="offsetAsPageNum" value="false"/>
            <property name="rowBoundsWithCount" value="false"/>
            <property name="pageSizeZero" value="true"/>
            <property name="reasonable" value="false"/>
            <property name="supportMethodsArguments" value="false"/>
            <property name="returnPageInfo" value="none"/>
        </plugin>

</plugins>  

3、使用方法
pageHelper会使用ThreadLocal获取到同一线程中的变量信息,各个线程之间的Threadlocal不会相互干扰,也就是Thread1中的ThreadLocal1之后获取到Tread1中的变量的信息,不会获取到Thread2中的信息
所以在多线程环境下,各个Threadlocal之间相互隔离,可以实现,不同thread使用不同的数据源或不同的Thread中执行不同的SQL语句
所以,PageHelper利用这一点通过拦截器获取到同一线程中的预编译好的SQL语句之后将SQL语句包装成具有分页功能的SQL语句,并将其再次赋值给下一步操作,所以实际执行的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( xxx.class, "queryAll" , param);
    //pagelist就是分页之后的结果
    B、分页并统计(每次执行2条语句,一条select count语句,一条分页语句)适用于查询分页时数据发生变动,需要将实时的变动信息反映到分页结果上
    Page<?> page = PageHelper.startPage([pageNum],[pageSize],[iscount]);
    List<?> pagelist = queryForList( xxx.class , "queryAll" , param);
    long count = page.getTotal();
    //也可以 List<?> pagelist = page.getList();  获取分页后的结果集
3)、使用PageHelper查全部(不分页)
    PageHelper.startPage(1,0);
    List<?> alllist = queryForList( xxx.class , "queryAll" , param);
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)、默认值
    //RowBounds参数offset作为PageNum使用 - 默认不使用
    private boolean offsetAsPageNum = false;
    //RowBounds是否进行count查询 - 默认不查询
    private boolean rowBoundsWithCount = false;
    //当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果
    private boolean pageSizeZero = false;
    //分页合理化
    private boolean reasonable = false;
    //是否支持接口参数来传递分页参数,默认false

private boolean supportMethodsArguments = false;  

 

mybatis分页插件PageHelper的使用(转)的更多相关文章

  1. Mybatis分页插件PageHelper的配置和使用方法

     Mybatis分页插件PageHelper的配置和使用方法 前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页. 前端分 ...

  2. Mybatis分页插件PageHelper使用

    一. Mybatis分页插件PageHelper使用  1.不使用插件如何分页: 使用mybatis实现: 1)接口: List<Student> selectStudent(Map< ...

  3. Java SSM框架之MyBatis3(三)Mybatis分页插件PageHelper

    引言 对于使用Mybatis时,最头痛的就是写分页,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真不想花双倍的时间写count和select ...

  4. Mybatis学习---Mybatis分页插件 - PageHelper

    1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...

  5. Mybatis分页插件PageHelper的实现

    Mybatis分页插件PageHelper的实现 前言 分页这个概念在做web网站的时候很多都会碰到 说它简单吧 其实也简单 小型的网站,完全可以自己写一个,首先查出数据库总条数,然后按照分页大小分为 ...

  6. 基于Mybatis分页插件PageHelper

    基于Mybatis分页插件PageHelper 1.分页插件使用 1.POM依赖 PageHelper的依赖如下.需要新的版本可以去maven上自行选择 <!-- PageHelper 插件分页 ...

  7. Mybatis分页插件-PageHelper的使用

    转载:http://blog.csdn.net/u012728960/article/details/50791343 Mybatis分页插件-PageHelper的使用 怎样配置mybatis这里就 ...

  8. (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示

    http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...

  9. springmvc mybatis 分页插件 pagehelper

    springmvc mybatis 分页插件 pagehelper 下载地址:pagehelper 4.2.1 , jsqlparser 0.9.5 https://github.com/pagehe ...

  10. MyBatis 分页插件PageHelper 后台报错

    今天遇到一个问题,使用MyBatis 分页插件PageHelper 进行排序分页后,能正常返回正确的结果,但后台却一直在报错 net.sf.jsqlparser.parser.ParseExcepti ...

随机推荐

  1. fedora 14安装经验

    初学linux系统,在win7 系统上安装VMware9.0,并用虚拟机安装fedora.安装了好几次,虽然还是没有彻底通透,但也有一点点心得,特地分享一下: 我安装fedora用于嵌入式ARM开发练 ...

  2. C#实现文件下载

    1,Http 协议中有专门的指令来告知浏览器, 本次响应的是一个需要下载的文件. 格式如下:Content-Disposition: attachment;filename=filename.ext以 ...

  3. SQL Server常见基础操作

    1. 常见针对表的操作(增删改查) --1. Create Table USE [MVC_000] CREATE TABLE T_TableName ( ID ,) PRIMARY KEY, Name ...

  4. vim 空格和换行的删除和替换

      %s/\s//g %s/\r//g %s/\n//g   把一个很长的一行按空格分为多行 :%s/ +/\r/g简单解释一下:%s :在整个文件范围查找替换/ :分隔符+ :匹配空格,其中“ ”表 ...

  5. Lua中点和冒号的区别

    在使用lua设计类时'.'和':'的区别主要在于使用'.'必须手动加self参数,使用':',可以隐藏这个参数,使用'.'调用使用':'定义的函数时,要注意,函数的第一个参数为self,如 funct ...

  6. kubernetes容器编排系统介绍

    版权声明:本文由turboxu原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/152 来源:腾云阁 https://www. ...

  7. IP的正则表达式

    首先分析IP地址0-255: 0-9:       [0-9]或 \d表示数字 10-99:   [1-9]\d 100-199: 1/d{2} 200-249:    2[0-4]\d 250-25 ...

  8. java多线程下如何调用一个共同的内存单元(调用同一个对象)

    /* * 关于线程下共享相同的内存单元(包括代码与数据) * ,并利用这些共享单元来实现数据交换,实时通信与必要的同步操作. * 对于Thread(Runnable target)构造方法创建的线程, ...

  9. 无法启动T-SQL 调试

    问题详情 解决办法 1.要在服务器本机,不要远程 2.用实例名,不要用.或者local 3.以Windows身份验证的administrator或者sqlserver身份验证的sa登录

  10. Play framework logging设置

    play的logger是基于Log4j,Play 2.0 uses logback as its logging engine. 一.配置 1. 在conf/application.conf中设置lo ...