Mybatis分页插件PageHelper的使用详解

1 说明

如果你也在用Mybatis,建议尝试该分页插件,个人感觉这个是最方便,超好用的分页插件。
该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。

2 使用方法

2.1 架包

在pom.xml文件中加入如下代码:



com.github.pagehelper
pagehelper
4.2.1

2.2 PageHelper的配置

在我的mybatis-config.xml中加入如下代码:






2.3 插入page.js文件

文件内容如下(有点小长):

/**
 * Created by zxm on 2017/3/31.
 */
$.fn.extend({
"initPage":function(listCount,currentPage,fun){
    var maxshowpageitem = $(this).attr("maxshowpageitem");
    if(maxshowpageitem!=null&&maxshowpageitem>0&&maxshowpageitem!=""){
        page.maxshowpageitem = maxshowpageitem;
    }
    var pagelistcount = $(this).attr("pagelistcount");
    if(pagelistcount!=null&&pagelistcount>0&&pagelistcount!=""){
        page.pagelistcount = pagelistcount;
    }

    var pageId = $(this).attr("id");
    page.pageId=pageId;
    if(listCount<0){
        listCount = 0;
    }
    if(currentPage<=0){
        currentPage=1;
    }
    page.setPageListCount(pageId,listCount,currentPage,fun);

}
});
var  page = {
"maxshowpageitem":5,//最多显示的页码个数
"pagelistcount":10,//每一页显示的内容条数
/**
 * 初始化分页界面
 * @param listCount 列表总量
 */
"initWithUl":function(pageId,listCount,currentPage){

    var pageCount = 1;
    if(listCount>0){
        var pageCount = listCount%page.pagelistcount>0?parseInt(listCount/page.pagelistcount)+1:parseInt(listCount/page.pagelistcount);
    }
    var appendStr = page.getPageListModel(pageCount,currentPage);
    $("#"+pageId).html(appendStr);
},
/**
 * 设置列表总量和当前页码
 * @param listCount 列表总量
 * @param currentPage 当前页码
 */
"setPageListCount":function(pageId,listCount,currentPage,fun){
    listCount = parseInt(listCount);
    currentPage = parseInt(currentPage);
    page.initWithUl(pageId,listCount,currentPage);
    page.initPageEvent(pageId,listCount,fun);
    if(typeof fun == "function"){
        fun(currentPage);
    }
},
"initPageEvent":function(pageId,listCount,fun){
    $("#"+pageId +">li[class='pageItem']").on("click",function(){
        page.setPageListCount(pageId,listCount,$(this).attr("page-data"),fun);
    });
},
"getPageListModel":function(pageCount,currentPage){
    var prePage = currentPage-1;
    var nextPage = currentPage+1;
    var prePageClass ="pageItem";
    var nextPageClass = "pageItem";
    if(prePage<=0){
        prePageClass="pageItemDisable";
    }
    if(nextPage>pageCount){
        nextPageClass="pageItemDisable";
    }
    var appendStr ="";
    appendStr+="
  • 首页
  • "; appendStr+="
  • <上一页
  • "; var miniPageNumber = 1; if(currentPage-parseInt(page.maxshowpageitem/2)>0&¤tPage+parseInt(page.maxshowpageitem/2)<=pageCount){ miniPageNumber = currentPage-parseInt(page.maxshowpageitem/2); }else if(currentPage-parseInt(page.maxshowpageitem/2)>0&¤tPage+parseInt(page.maxshowpageitem/2)>pageCount){ miniPageNumber = pageCount-page.maxshowpageitem+1; if(miniPageNumber<=0){ miniPageNumber=1; } } var showPageNum = parseInt(page.maxshowpageitem); if(pageCount"+pageNumber+""; } appendStr+="
  • 下一页>
  • "; appendStr+="
  • 尾页
  • "; return appendStr; } }

    3 Java代码和JSP中实现

    准备工作做好了,可以实现啦;

    3.1 Java中的代码

    导包是必须滴!!!

    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    

    其次再看关键的两句代码:

    @RequestMapping(value = "/findAllUser")
    public String findAllUser(Model model) {        
        PageHelper.startPage(CommonConstant.INITPAGE, CommonConstant.USERTABLENUM);
        List userList = userService.findAllUserList();
        PageInfo userListPageInfo = new PageInfo<>(userList);
        model.addAttribute("usermes", userList);
        model.addAttribute("pageUser",userListPageInfo);
        this.currentUserName = null;
        return "userManage"; 
    }
      /**
     * 

    Title: findUserListByPage

    *

    Description: 翻页查询UserList

    * @author 刘冬冬 * @Date 2017年5月16日 * @param model * @param goalPage * @return */ @RequestMapping(value = "/findUserListByPage") public String findUserListByPage(Model model, int goalPage) { PageHelper.startPage(goalPage, CommonConstant.USERTABLENUM); if(this.currentUserName != null){ List userList = userService.selectByUserName(this.currentUserName); PageInfo userListPageInfo = new PageInfo<>(userList); for (User user : userList) { if(user.getLoginTime()!= null){ Date date = new Date(((User) user).getLoginTime()); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); user.setLoginTimeFormate(format.format(date)); }else{ user.setLoginTimeFormate("从未登录"); } } model.addAttribute("usermes", userList); model.addAttribute("pageUser",userListPageInfo); }else{ List userList = userService.findAllUserList(); PageInfo userListPageInfo = new PageInfo<>(userList); model.addAttribute("usermes", userList); model.addAttribute("pageUser",userListPageInfo); } return "userManage"; }

    这么长一段代码关键的就是两句,现在把它拿出来:

    PageHelper.startPage(goalPage, CommonConstant.USERTABLENUM);
    PageInfo userListPageInfo = new PageInfo<>(userList);
    

    3.2 jsp中的代码

    
    

    其中也实现了按钮禁用功能,当时首页或者尾页时,就不能点击事件并且变灰。
    不足之处请指教修改,不断总结与学习!!!

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