1 说明
如果你也在用Mybatis,建议尝试该分页插件,个人感觉这个是最方便,超好用的分页插件。
该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。
2 使用方法
2.1 架包
在pom.xml文件中加入如下代码:
<!-- pageHelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.2.1</version>
</dependency>
2.2 PageHelper的配置
在我的mybatis-config.xml中加入如下代码:
<!-- 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文件
文件内容如下(有点小长):
/**
* 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'><上一页</li>";
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<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'>下一页> </li>";
appendStr+="<li class='"+nextPageClass+"' page-data='"+pageCount+"' page-rel='lastpage'>尾页</li>";
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<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";
}
这么长一段代码关键的就是两句,现在把它拿出来:
PageHelper.startPage(goalPage, CommonConstant.USERTABLENUM);
PageInfo<User> userListPageInfo = new PageInfo<>(userList);
3.2 jsp中的代码
<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>
其中也实现了按钮禁用功能,当时首页或者尾页时,就不能点击事件并且变灰。
不足之处请指教修改,不断总结与学习!!!