mybatis分页插件pageHelper使用详解

一直以来都用的是自己封装的一个pageBean类来处理分页相关的业务,这个pageBean是从传智播客的视频上面学到的,最近看到别人写的都是用的mybatis的pageHelper,所以自己也心痒痒,将自己的一个竞赛管理系统的分页也换成了pageHelper的方式。话不多说,直接上配置。

首先要使用mybatis的这个插件就必须在mybatis的配置文件中配置插件的相关设置。

mybatis-config.xml :



    
        
        
    

    
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
    

    
    
    
        
    

这里解释下各种参数:
1、dialect 方言,相信大家不会陌生,就是配置数据库类型,常见的值有mysql、oracle、SqlServer等。这一项是必须配置的。
2、增加offsetAsPageNum属性,默认值为false,则使用默认值时不需要增加该配置,需要设为真时,需要配置该参数。当该参数设置为真时,使用RowBounds分页时,会将偏移参数当成页次使用,可以用页码和页面大小两个参数进行分页。

后面两个参数的作用在注释中解释的非常清楚了,这里不再赘述,关于参数还有好几个,大家可以查看https://github.com/pagehelper/Mybatis-PageHelper github官方文档。

然后就是使用了,这里以查询一个竞赛列表信息为例子。

@Override
    public PageInfo getContestListByModality(int modality, int currentPage) {

        Map map = new HashMap<>(1);
        PageInfo pageInfo = null;
        map.put("modality",modality);
        try {
            PageHelper.startPage(currentPage,CURRENTCOUNT);
            List list = contestDaoMapper.selectByModality(map);
            pageInfo = new PageInfo<>(list);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return pageInfo;
    }

在PageHelper.startPage() 后面的第一个查询会默认使用分页查询,也就是说不必自己再写一个sql去查询总的条数。查询出来的结果使用pageInfo这个类进行接收。

PageInfo这个类中封装了分页所需要的各种参数,十分方便。

下面贴出PageInfo的源代码:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.github.pagehelper;

import java.io.Serializable;
import java.util.List;

public class PageInfo implements Serializable {
    private static final long serialVersionUID = 1L;
    private int pageNum;
    private int pageSize;
    private int size;
    private int startRow;
    private int endRow;
    private long total;
    private int pages;
    private List list;
    private int firstPage;
    private int prePage;
    private int nextPage;
    private int lastPage;
    private boolean isFirstPage;
    private boolean isLastPage;
    private boolean hasPreviousPage;
    private boolean hasNextPage;
    private int navigatePages;
    private int[] navigatepageNums;
    ........
   }

参数解释:
pageNum :当前页码数。
pageSize : 每一页装的条数。
size : 查询出来的总的页数。
startRow :从哪一条开始查询的。
endRow : 哪一条结束。
total : 总的条数。
pages : 总的页数。
list : 记录集合。
firstPage : 第一页。
prePage : 上一页。
nextPage : 下一页。
lastPage : 最后一页。
isFirstPage : 是否是第一页。
isLastPage :是否是最后一页。
hasPreviousPage : 是否有前一页。
hasNextPage : 是否有后一页。
navigatePages : 导航总的页数。
navigatepageNums : 页数集合。即从第一页到最后一页的页码数。

这个类使用真的很方便,可以直接使用EL表达式来取值。

在jsp中使用EL表达式取值:

contest.jsp :


     
                
                    
                            ${contest.theam}
                    
                    
                        
                            个人
                        
                        
                            团队
                        
                        
                            个人/团队
                        
                    
                    ${contest.way}
                    ${contest.deadline}
                    ${contest.startTime}
                    ${contest.endTime}
                    
                        
                    
                
            
            

以上就是最简单的pageHelper使用教程了,如果需要深入了解使用方式,请参考github:https://github.com/pagehelper/Mybatis-PageHelper。

你可能感兴趣的:(mybatis分页插件pageHelper使用详解)