前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis分页插件PageHelper的使用详解

Mybatis分页插件PageHelper的使用详解

作者头像
麦克劳林
发布2018-09-11 16:45:47
2.2K0
发布2018-09-11 16:45:47
举报

1 说明

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

2 使用方法

2.1 架包

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

代码语言:javascript
复制
<!-- pageHelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.2.1</version>
</dependency>

2.2 PageHelper的配置

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

代码语言:javascript
复制
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- PageHelper的配置 -->
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>

2.3 插入page.js文件

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

代码语言:javascript
复制
/**
 * 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+="<li class='"+prePageClass+"' page-data='1' page-rel='firstpage'>首页</li>";
    appendStr+="<li class='"+prePageClass+"' page-data='"+prePage+"' page-rel='prepage'>&lt;上一页</li>";
    var miniPageNumber = 1;
    if(currentPage-parseInt(page.maxshowpageitem/2)>0&&currentPage+parseInt(page.maxshowpageitem/2)<=pageCount){
        miniPageNumber = currentPage-parseInt(page.maxshowpageitem/2);
    }else if(currentPage-parseInt(page.maxshowpageitem/2)>0&&currentPage+parseInt(page.maxshowpageitem/2)>pageCount){
        miniPageNumber = pageCount-page.maxshowpageitem+1;
        if(miniPageNumber<=0){
            miniPageNumber=1;
        }
    }
    var showPageNum = parseInt(page.maxshowpageitem);
    if(pageCount<showPageNum){
        showPageNum = pageCount
    }
    for(var i=0;i<showPageNum;i++){
        var pageNumber = miniPageNumber++;
        var itemPageClass = "pageItem";
        if(pageNumber==currentPage){
            itemPageClass = "pageItemActive";
        }

        appendStr+="<li class='"+itemPageClass+"' page-data='"+pageNumber+"' page-rel='itempage'>"+pageNumber+"</li>";
    }
    appendStr+="<li class='"+nextPageClass+"' page-data='"+nextPage+"' page-rel='nextpage'>下一页&gt;  </li>";
    appendStr+="<li class='"+nextPageClass+"' page-data='"+pageCount+"' page-rel='lastpage'>尾页</li>";
   return appendStr;

  }
}

3 Java代码和JSP中实现

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

3.1 Java中的代码

导包是必须滴!!!

代码语言:javascript
复制
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

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

代码语言:javascript
复制
@RequestMapping(value = "/findAllUser")
public String findAllUser(Model model) {        
    PageHelper.startPage(CommonConstant.INITPAGE, CommonConstant.USERTABLENUM);
    List<User> userList = userService.findAllUserList();
    PageInfo<User> userListPageInfo = new PageInfo<>(userList);
    model.addAttribute("usermes", userList);
    model.addAttribute("pageUser",userListPageInfo);
    this.currentUserName = null;
    return "userManage"; 
}
  /**
 * <p>Title: findUserListByPage</p>
 * <p>Description: 翻页查询UserList</p>
 * @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<User> userList = userService.selectByUserName(this.currentUserName);
        PageInfo<User> 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<User> userList = userService.findAllUserList();
        PageInfo<User> userListPageInfo = new PageInfo<>(userList);
        model.addAttribute("usermes", userList);
        model.addAttribute("pageUser",userListPageInfo);
    }                   
    return "userManage";  
}

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

代码语言:javascript
复制
PageHelper.startPage(goalPage, CommonConstant.USERTABLENUM);
PageInfo<User> userListPageInfo = new PageInfo<>(userList);

3.2 jsp中的代码

代码语言:javascript
复制
<div id="allDevPaginationInfo">
        <div id="allDevCount"class="col-md-4 column">
            <label>本页共${pageUser.size}个用户    总共${pageUser.total}个用户</label>
        </div>
        <div id="allDevpagination" class="col-md-8 column" >
            <ul class="pagination" >
                <li><a href="${pageContext.request.contextPath}/asset/user/findUserListByPage?goalPage=1"<c:if test="${pageUser.pageNum==1}"> style="color: #A8A8A8" onclick=" return document.execCommand('refresh',false,0)"</c:if>>首页</a></li>
                <li><a href="${pageContext.request.contextPath}/asset/user/findUserListByPage?goalPage=${pageUser.prePage}"<c:if test="${pageUser.pageNum==1}"> style="color: #A8A8A8" onclick=" return document.execCommand('refresh',false,0)"</c:if>>上一页</a></li>
                <li><a href="${pageContext.request.contextPath}/asset/user/findUserListByPage?goalPage=${pageUser.nextPage}" <c:if test="${pageUser.pageNum==pageUser.pages}"> style="color: #A8A8A8" onclick=" return document.execCommand('refresh',false,0)"</c:if>>下一页</a></li>
                <li><a href="${pageContext.request.contextPath}/asset/user/findUserListByPage?goalPage=${pageUser.pages}" <c:if test="${pageUser.pageNum==pageUser.pages}"> style="color: #A8A8A8" onclick=" return document.execCommand('refresh',false,0)"</c:if>>尾页</a></li> 
                <li><label>第${pageUser.pageNum}页</label><label>/共${pageUser.pages}页</label></li>
            </ul>
        </div>
    </div>

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.06.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 说明
  • 2 使用方法
    • 2.1 架包
      • 2.2 PageHelper的配置
        • 2.3 插入page.js文件
        • 3 Java代码和JSP中实现
          • 3.1 Java中的代码
            • 3.2 jsp中的代码
            相关产品与服务
            云数据库 MariaDB
            腾讯云数据库 MariaDB(TencentDB for MariaDB) 让您轻松在云端部署、使用 MariaDB 数据库。MariaDB 是在 MySQL 版权被 Oracle 收购后,由 MySQL 创始人 Monty 创立,其版权授予了“MariaDB基金会(非营利性组织)”以保证 MariaDB 永远开源,良好的开源策略,是企业级应用的最优选择,主流开源社区系统/软件的数据库系统,均已默认配置 MariaDB。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档