爱游戏全站app官网入口-爱游戏官网

mybatis的分页插件pagehelper -爱游戏全站app官网入口

2023-08-21,,

mybatis的pagehelper

项目地址:http://git.oschina.net/free/mybatis_pagehelper 
文档地址:http://git.oschina.net/free/mybatis_pagehelper/blob/master/wikis/howtouse.markdown

 
我用的版本是pagehelper-4.1.1、mybatis-3.3.0
pagehelper 依赖于 jsqlparser-0.9.4.jar

添加如下依赖:


    com.github.pagehelper
    pagehelper
    4.1.6

当使用maven中央库中的快照版(带"-snapshot"的版本)时,需要在pom.xml中添加如下配置:


    
          sonatype-nexus-snapshots
          sonatype nexus snapshots
          http://oss.sonatype.org/content/repositories/snapshots
          
                false
          
          
                true
          
    

2. 在mybatis配置mybatis-config.xml中配置拦截器插件:

plugins插件的配置在 settings之后 在environments之前



    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

pagehelper会使用threadlocal获取到同一线程中的变量信息,各个线程之间的threadlocal不会相互干扰,也就是thread1中的threadlocal1之后获取到tread1中的变量的信息,不会获取到thread2中的信息
所以在多线程环境下,各个threadlocal之间相互隔离,可以实现,不同thread使用不同的数据源或不同的thread中执行不同的sql语句
所以,pagehelper利用这一点通过拦截器获取到同一线程中的预编译好的sql语句之后将sql语句包装成具有分页功能的sql语句,并将其再次赋值给下一步操作,所以实际执行的sql语句就是有了分页功能的sql语句
pagehelper只对紧跟着的第一个sql语句起作用
如上:所以若一个方法中涉及到多个查询,需要小心,避免为不需要分页的添加了分页,而真正需要分页的却没有被分页

测试

@runwith(springjunit4classrunner.class)
@contextconfiguration(value = {"classpath:spring/spring-*.xml"})
public class testpagehelper {
    @resource
    private tbitemmapper itemmapper;
    @test
    public void testpagehelper() throws exception {
        //2、设置分页,第104页,每页显示30条
        pagehelper.startpage(104, 30);
        //3、执行查询
        tbitem item = new tbitem();
        list list = itemmapper.selectbyselective(item);
        //4、取分页后结果
        pageinfo pageinfo = new pageinfo<>(list);
        int pagenum = pageinfo.getpagenum();
        system.out.println("当前是第几页:"   pagenum);
        int pagesize = pageinfo.getpagesize();
        system.out.println("当前页最多显示几条:"   pagesize);
        int size = pageinfo.getsize();
        system.out.println("当前页有几条记录:"   size);
        int startrow = pageinfo.getstartrow();
        system.out.println("当前页开始记录:"   startrow);
        int endrow = pageinfo.getendrow();
        system.out.println("当前页最后一条记录:"   endrow);
        long total = pageinfo.gettotal();
        system.out.println("总共查出来多少条记录:"   total);
        int pages = pageinfo.getpages();
        system.out.println("总共有多少页:"   pages);
    }
}

结果

当前是第几页:104
当前页最多显示几条:30
当前页有几条记录:6
当前页开始记录:3091
当前页最后一条记录:3096
总共查出来多少条记录:3096
总共有多少页:104

mybatis的分页插件pagehelper的相关教程结束。

网站地图