主要实现代码:
1.在mybatis-config.xml引入分页插件
<!-- 引入分页查询的插件 -->
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- <property name="dialect" value="mysql"/> -->
<property name="offsetAsPageNum" value="false"/>
<property name="rowBoundsWithCount" value="false"/>
<property name="pageSizeZero" value="true"/>
<property name="reasonable" value="false"/>
<property name="supportMethodsArguments" value="false"/>
<property name="returnPageInfo" value="none"/>
</plugin>
</plugins>
2.创建mapper接口里分页方法
/**
* 分页查询
* @param pageNum
* @param pageSize
* @return
*/
//@Select("select * from user")
List<User> selectPageUser(User user);
3.在映射文件里配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 配置表与类映射
namespace:命名空间
-->
<mapper namespace="cn.xxs.mapper.UserMapper">
<select id="selectPageUser" parameterType="user" resultType="user">
select
*
from user
<where>
<if test="id != null and id != '' ">
and id = #{id}
</if>
<if test="name != null and name != '' ">
and name LIKE concat('%',#{name},'%')
</if>
</where>
</select>
</mapper>
4.创建service层接口(pageNum为页码,pageSize为行数,user为pojo)
/**
* 分页查询
* @param pageNum
* @param pageSize
* @return
*/
PageInfo<User> selectPage(Integer pageNum,Integer pageSize,User user);
5.创建ervice层接口实现类
/**
* 分页查询
*/
@Override
public PageInfo<User> selectPage(Integer pageNum, Integer pageSize,User user) {
PageHelper.startPage(pageNum,pageSize);
List<User> userList = userMapper.selectPageUser(user);
PageInfo<User> pageInfo = new PageInfo<User>(userList,pageSize);
return pageInfo;
}
6.控制层主要代码
/**
* mybatis分页
*/
@RequestMapping(value="pageUserInfo")
public String pageUserInfo(Integer pageNum,ModelMap map,User user) {
if(pageNum==null) {
pageNum = 1;
}
if(user==null) {
user = new User();
}
Integer pageSize = 3;
PageInfo<User> pageInfo = userService.selectPage(pageNum, pageSize,user);
map.put("pageInfo", pageInfo);
map.put("id", user.getId());
map.put("name", user.getName());
return "user/page_userInfo";
}
7.分页的页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="/ssm_select/js/jquery-3.3.1.js"></script>
<script type="text/javascript">
$(function() {
})
function btn(v) {
$("#pageNum").val(v);
$("#form").submit();
}
</script>
</head>
<body>
<a href="/ssm_select/user/editUser">新增数据</a>
<form id="form" action="/ssm_select/user/pageUserInfo" method="post">
<table>
<tr><td>用户编号:<input type="text" name="id" value="${id }"></td></tr>
<tr><td>用户姓名:<input type="text" name="name" value="${name }"></td></tr>
<tr><td align="right">
<input type="submit" name="id" value="查询">
<input type="hidden" name="pageNum" id="pageNum">
</td></tr>
</table>
</form>
<table>
<tr>
<td>用户编号</td>
<td>用户姓名</td>
<td>密码</td>
<td>创建时间</td>
<td>操作</td>
</tr>
<c:forEach items="${pageInfo.list }" var="user">
<tr>
<td>${user.id }</td>
<td>${user.name }</td>
<td>${user.pwd }</td>
<td><fmt:formatDate value="${user.createDate }" pattern="yyyy-MM-dd"/></td>
<td><a href="/ssm_select/user/delUser?id=${user.id }">删除</a>
<a href="/ssm_select/user/renewalUser?id=${user.id }">更新</a></td>
</tr>
</c:forEach>
<tr>
<td colspan="7" align="center">
共${pageInfo.total }条记录,共${pageInfo.pages }页
当前第${pageInfo.pageNum }页,每页显示${pageInfo.pageSize }条
<a href="javascript:btn(1);">首页</a>
<c:if test="${pageInfo.hasPreviousPage==true }">
<a href="javascript:btn(${pageInfo.prePage });">上一页</a>
</c:if>
<c:if test="${pageInfo.hasPreviousPage!=true }">
<a>上一页</a>
</c:if>
<c:if test="${pageInfo.hasNextPage==true }">
<a href="javascript:btn(${pageInfo.nextPage });">下一页</a>
</c:if>
<c:if test="${pageInfo.hasNextPage!=true }">
<a>下一页</a>
</c:if>
<a href="javascript:btn(${pageInfo.pages });">末页</a>
</td>
</tr>
</table>
</body>
</html>