SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。下面我简单说说利用SSM创建一个分页模板,内附源码下载地址:
第一步:创建分页的pojo:
/**
* @filename PageDemo.java
* @author 冯琪
* @date 2017年11月16日 下午9:05:18
* @version 1.0
* Copyright (C) 2017 冯琪
*/
package com.auth.util;
import java.util.List;
public class PageDemo {
//每页显示条数
private int pageNum=8;
//总条数
private int totalNum=0;
//当前页码
private int currNo=1;
//总页数
private int totalPage=0;
//查询下标位置,limit 中的第一个参数
@SuppressWarnings("unused")
private int pageIndex=0;
//存储返回的集合对象
private List<?> resultList;
//请求地址, user/list.action
private String url;
//请求参数(搜索条件参数的封装), &userCode=admin&userType=1&userState=1
private String params;
public PageDemo() {
}
public PageDemo(int totalNum, int currNo) {
this.totalNum = totalNum;
this.currNo = currNo;
}
public PageDemo(int pageNum, int totalNum, int currNo, List<?> resultList, String url, String params) {
super();
this.pageNum = pageNum;
this.totalNum = totalNum;
this.currNo = currNo;
this.resultList = resultList;
this.url = url;
this.params = params;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getTotalNum() {
return totalNum;
}
public void setTotalNum(int totalNum) {
this.totalNum = totalNum;
}
//当前页码
public int getCurrNo() {
if(currNo==0){
currNo=1;
}
return currNo;
}
public void setCurrNo(int currNo) {
this.currNo = currNo;
}
//总页数
public int getTotalPage() {
totalPage=(totalNum%pageNum==0)?(totalNum/pageNum):(totalNum/pageNum)+1;
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
//查询下标位置
public int getPageIndex() {
return pageNum*(currNo-1);
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public List<?> getResultList() {
return resultList;
}
public void setResultList(List<?> resultList) {
this.resultList = resultList;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getParams() {
return params;
}
public void setParams(String params) {
this.params = params;
}
}
第二步:随便创建一个用户的pojo,我以用户分页为例:
/**
* @filename UserInfo.java
* @author 冯琪
* @date 2017年11月14日 下午1:20:02
* @version 1.0
* Copyright (C) 2017 冯琪
* 用户Javabean
*/
package com.auth.entity;
import java.util.List;
public class UserInfo {
private Integer userId;
private String nickName;
private String userCore;
private String userPwd;
private String userType;
private String userState;
private String isDelete;
private Integer createBy;
private String createTime;
private Integer updateBy;
private String updateTime;
private List<UserInfo> userMess;
public UserInfo() {
}
public UserInfo(Integer userId, String nickName, String userCore,
String userPwd, String userType, String userState, String isDelete,
Integer createBy, String createTime, Integer updateBy,
String updateTime, List<UserInfo> userMess) {
super();
this.userId = userId;
this.nickName = nickName;
this.userCore = userCore;
this.userPwd = userPwd;
this.userType = userType;
this.userState = userState;
this.isDelete = isDelete;
this.createBy = createBy;
this.createTime = createTime;
this.updateBy = updateBy;
this.updateTime = updateTime;
this.userMess = userMess;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getUserCore() {
return userCore;
}
public void setUserCore(String userCore) {
this.userCore = userCore;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String getUserType() {
return userType;
}
public void setUserType(String userType) {
this.userType = userType;
}
public String getUserState() {
return userState;
}
public void setUserState(String userState) {
this.userState = userState;
}
public String getIsDelete() {
return isDelete;
}
public void setIsDelete(String isDelete) {
this.isDelete = isDelete;
}
public Integer getCreateBy() {
return createBy;
}
public void setCreateBy(Integer createBy) {
this.createBy = createBy;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public Integer getUpdateBy() {
return updateBy;
}
public void setUpdateBy(Integer updateBy) {
this.updateBy = updateBy;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public List<UserInfo> getUserMess() {
return userMess;
}
public void setUserMess(List<UserInfo> userMess) {
this.userMess = userMess;
}
@Override
public String toString() {
return "UserInfo [userId=" + userId + ", nickName=" + nickName
+ ", userCore=" + userCore + ", userPwd=" + userPwd
+ ", userType=" + userType + ", userState=" + userState
+ ", isDelete=" + isDelete + ", createBy=" + createBy
+ ", createTime=" + createTime + ", updateBy=" + updateBy
+ ", updateTime=" + updateTime + ", userMess=" + userMess + "]";
}
}
第三步:在用户的mapper层添加分页的接口和实现类:
/**
* 查询用户总数量
*
*/
public int selectUserCount(HashMap<String,Object> hashmap);
/**
* 分页查询用户信息
*
*/
public List<UserInfo> selectUserPage(HashMap<String,Object> hashmap);
<!-- 查询用户的总人数 -->
<select id="selectUserCount" parameterType="hashmap" resultType="int" >
SELECT COUNT(0) FROM `user_info`
<where>
<if test="userCore!=null and userCore!=''">
nick_name=#{userCore}
</if>
<if test="userType!=null and userType!=''">
and user_type=#{userType}
</if>
<if test="userState!=null and userState!=''">
and user_state=#{userState}
</if>
and is_delete='0'
</where>
</select>
<!-- 分页查询用户信息 -->
<select id="selectUserPage" parameterType="hashmap" resultType="UserInfo">
select user_id AS userId,nick_name AS nickName,user_code AS userCore,user_pwd AS userPwd,user_type AS userType,user_state AS userState,is_delete AS isDelete,create_by AS createBy,
create_time AS createTime,update_by AS updateBy,update_time AS updateTime
from user_info
<where>
<if test="userCore!=null and userCore!=''">
and nick_name=#{userCore}
</if>
<if test="userType!=null and userType!=''">
and user_type=#{userType}
</if>
<if test="userState!=null and userState!=''">
and user_state=#{userState}
</if>
and is_delete='0'
</where>
limit #{pageIndex},#{pageNum}
</select>
第四步:在用户的service层添加接口和实现类:
/**
* 查询用户总人数
*
*/
public int selectUserCount(HashMap<String,Object> hashmap);
/**
* 分页查询用户信息
*
*/
public List<UserInfo> selectUserPage(HashMap<String,Object> hashmap);
/**
* 分页查询用户总人数
*
*/
public int selectUserCount(HashMap<String,Object> hashmap){
return userMapper.selectUserCount(hashmap);
}
/**
* 分页查询用户信息
*
*/
public List<UserInfo> selectUserPage(HashMap<String,Object> hashmap){
return userMapper.selectUserPage(hashmap);
}
第五步:在用户控制层添加分页方法:
/**
*
*@comment 更改人员状态
*@author 冯琪
*@date 2017年11月19日 下午6:49:37
*@param empID
*@param status
*@version 1.0
*/
@RequestMapping("/user-list")
public ModelAndView userPageList(HttpServletRequest request,UserInfo userInfo){
ModelAndView mov=new ModelAndView("user-list");
HashMap<String,Object> map=new HashMap<String,Object>();
//获取当前页码
String pageNo=request.getParameter("currNo");
//每页显示条数
pageNum="8";
//获取搜索框内容
String userCore=request.getParameter("userCore");
String userType=request.getParameter("userType");
String userState=request.getParameter("userState");
System.out.println("用户名"+userCore);
int currNo=1;
if(pageNo!=null && !"".equals(pageNo)){
currNo=Integer.parseInt(pageNo);
}
StringBuffer sbf=new StringBuffer();
//角色列表
List<RoleInfo> roleList=roleService.selectAllRole(null);
//通过StringBuffer封装参数
if(userCore!=null && userCore!=""){
sbf.append("&userCode=").append(userCore);
}
if(userType!=null && userType!=""){
sbf.append("&userType=").append(userType);
}
if(userState!=null && userState!=""){
sbf.append("&userState=").append(userState);
}
map.put("userCore", userCore);
map.put("userType", userType);
map.put("userState", userState);
int totalCount=userService.selectUserCount(map);
//查询商品列表信息
PageDemo pageBean=new PageDemo(totalCount,currNo);
PageDemo page=new PageDemo();
//每页显示条数
page.setPageNum(Integer.parseInt(pageNum));
//查询总条数
page.setTotalNum(userService.selectUserCount(map));
//当前页码
page.setCurrNo(currNo);
map.put("pageIndex", pageBean.getPageIndex());
map.put("pageNum", pageBean.getPageNum());
//获取用户列表
page.setResultList(userService.selectUserPage(map));
//请求地址
page.setUrl("user/user-list.action");
mov.addObject("page", page);
mov.addObject("roleList", roleList);
mov.addObject("UserList", userService.selectUserPage(map));
return mov;
}
第六步:创建一个jsp页面,用于写分页的实现页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
总 ${page.totalNum} 条
每页 ${page.pageNum} 条
总 ${page.totalPage} 页
第 ${page.currNo} 页
<c:if test="${page.currNo==1}">首页</c:if>
<c:if test="${page.currNo!=1}"><a href="${pageContext.request.contextPath}/${page.url}?${page.params}&currNo=1">首页</a></c:if>
<c:if test="${page.currNo==1}">上一页</c:if>
<c:if test="${page.currNo!=1}"><a href="${pageContext.request.contextPath}/${page.url}?${page.params}&currNo=${page.currNo-1}">上一页</a></c:if>
<c:if test="${page.currNo==page.totalPage}">下一页</c:if>
<c:if test="${page.currNo!=page.totalPage}"><a href="${pageContext.request.contextPath}/${page.url}?${page.params}&currNo=${page.currNo+1}">下一页</a></c:if>
<c:if test="${page.currNo==page.totalPage}">尾页</c:if>
<c:if test="${page.currNo!=page.totalPage}"><a href="${pageContext.request.contextPath}/${page.url}?${page.params}&currNo=${page.totalPage}">尾页</a></c:if>
第<select οnchange="location.href='${pageContext.request.contextPath}/${page.url}?${page.params}&currNo='+this.value">
<c:forEach var="selectvalue" begin="1" end="${page.totalPage}" step="1">
<option value="${selectvalue}" ${page.currNo eq selectvalue ?"selected='selected'":""}>
${selectvalue}
</option>
</c:forEach>
</select>
页
第七步:在用户页面引用上一步的JSP页面模板:
<jsp:include page="standard.jsp"/>
第八步:最终效果:
源码下载地址:点我下载