欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SSM+PageHelper 使用

程序员文章站 2022-04-08 16:49:35
项目中使用了maven 1 引入jar包 首先需要引入PageHelper的jar包。 如果使用了maven,那么只要在pom.xml中引入该插件即可,引入如下: com.github.pagehelper pa ......

项目中使用了maven

  1 引入jar包

  首先需要引入PageHelper的jar包。 

  如果使用了maven,那么只要在pom.xml中引入该插件即可,引入如下:

  <dependency>  

     <groupId>com.github.pagehelper</groupId>

     <artifactId>pagehelper</artifactId>

     <version>4.1.4</version>

   </dependency>
一定要注意:版本号不能太低,最开始用3点几的时候,报500的错误,不能正确分页。
2.  在sqlMapConfig.xml中配置:
 
  1. <!-- 配置分页插件 -->  
  2. <plugins>  
  3.     <plugin interceptor="com.github.pagehelper.PageHelper">  
  4.         <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->          
  5.         <property name="dialect" value="mysql"/>  
  6.            <!-- 该参数默认为false -->    
  7.            <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->    
  8.            <!-- 和startPage中的pageNum效果一样-->    
  9.            <property name="offsetAsPageNum" value="true"/>    
  10.            <!-- 该参数默认为false -->   
  11.            <!-- 设置为true时,使用RowBounds分页会进行count查询 -->    
  12.            <property name="rowBoundsWithCount" value="true"/>    
  13.            <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->    
  14.            <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->    
  15.            <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->    
  16.            <property name="reasonable" value="true"/>    
  17.            <!-- 支持通过Mapper接口参数来传递分页参数 -->    
  18.            <property name="supportMethodsArguments" value="true"/>    
  19.            <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->    
  20.            <property name="returnPageInfo" value="check"/>    
  21.     </plugin>  
  22. </plugins>  
3 serviceImpl 中接收从mapper.xml中查到的结果,运用pagehelper分页
example:   

         public TbResult getArticleByType(String type,int pageNumber, int pageSize) {
                       TbArticleExample example = new TbArticleExample(); 
                       Criteria criteria = example.createCriteria();
                       criteria.andTypeEqualTo(type);
                       PageHelper.startPage(pageNumber, pageSize);
                       List<TbArticle> art = articleMapper.selectByExampleWithBLOBs(example);
                       PageInfo<TbArticle> pageInfo = new PageInfo<>(art);
                       TbResult result =new TbResult();
                       result.setRows(art);
                       result.setTotal(pageInfo.getTotal());
                       return result;
         }

         可以看出 PageHelper.startPage(pageNumber, pageSize);是在执行sql前出现, PageInfo 其实是已经分完的结果,我这里是把结果又分装到了一个TbResult类中,后来发现不需要这么写。pageInfo.getList()就是art ,所以其实直接返回pageInfo就行。

4  在Controller层接收结果就可以了