本博客中使用到的JsonUtil参看博客:Jackson工具类
MyBatis 版
- 使用分页插件:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.0</version>
</dependency>
- PageBean
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class PageBean<T> {
/**
* 每页显示的条数
*/
private Integer pageSize = 10;
/**
* 当前的页码
*/
private Integer current;
/**
* 一共有多少条记录
*/
private Long total;
/**
* 一共有多少页
*/
private Integer pages;
/**
* 每一页所显示的数据
*/
private List<T> result;
/**
* 分页请求路径
*/
private String url;
@Override
public String toString() {
return JsonUtil.obj2String(this);
}
/**
* 将MyBatisPlus返回的IPage数据封装为自定义的PageBean
*
* @param page
* @param <T>
* @return
*/
public static <T> PageBean<T> init(Page<T> page) {
PageBean<T> pageBean = new PageBean<>();
pageBean.setCurrent(page.getPageNum());
pageBean.setPages(page.getPages());
pageBean.setPages(page.getPages());
pageBean.setTotal(page.getTotal());
pageBean.setResult(page.getResult());
return pageBean;
}
}
MyBatisPlus版
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.Page;
import com.resume.utils.JsonUtil;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* 分页Bean
*
* @param <T>
* @author 梁云亮
*/
@Setter
@Getter
public class PageBean<T> {
/**
* 每页显示的条数
*/
private Long size = 10L;
/**
* 当前的页码
*/
private Long current;
/**
* 一共有多少条记录
*/
private Long total;
/**
* 一共有多少页
*/
private Long pages;
/**
* 每一页所显示的数据
*/
private List<T> records;
/**
* 分页请求路径
*/
private String url;
/**
* 将MyBatisPlus的IPage对象转换为自定义的PageBean对象
*
* @param page
* @return
*/
public static <T> PageBean<T> init(IPage<T> page) {
PageBean<T> pageBean = new PageBean<>();
pageBean.setSize(page.getSize());
pageBean.setCurrent(page.getCurrent());
pageBean.setTotal(page.getTotal());
pageBean.setPages(page.getPages());
pageBean.setRecords(page.getRecords());
return pageBean;
}
@Override
public String toString() { //测试时使用
return JsonUtil.obj2StringPretty(this);
}
}
控制器
@GetMapping("/getAllUser/{pageNum}/{pageSize}")
public ModelAndView getAllUser(
@PathVariable("pageNum") Integer pageNum,
@PathVariable("pageSize") Integer pageSize,
ModelAndView mav){
PageBean<User> pageBean = userService.selectPage(pageNum, pageSize);
pageBean.setUrl("user/getAllUser");
mav.addObject("pageBean",pageBean);
mav.setViewName("user/list");
return mav;
}
通用分页代码
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<ul class="pagination">
<c:if test="${pageBean.pageNum <= 1}">
<li class="disabled"><span>上一页</span></li>
</c:if>
<c:if test="${pageBean.pageNum > 1}">
<li>
<a rel="nofollow" href="${pageContext.request.contextPath}/${pageBean.url}/${pageBean.pageNum-1}/${pageSize}">上一页</a>
</li>
</c:if>
<%-- 默认最多只能显示12个页码--%>
<c:if test="${pageBean.pageNum <7}">
<c:forEach begin="1" end="${12>pageBean.pages?pageBean.pages:12}" var="index">
<c:if test="${pageBean.pageNum == index}">
<li class="active"><span>${index}</span></li>
</c:if>
<c:if test="${pageBean.pageNum != index}">
<li>
<a rel="nofollow" href="${pageContext.request.contextPath}/${pageBean.url}/${index}/${pageBean.pageSize}">${index}</a>
</li>
</c:if>
</c:forEach>
</c:if>
<c:if test="${pageBean.pageNum >= 7}">
<c:forEach begin="${pageBean.pageNum-6}" end="${pageBean.pages-pageBean.pageNum>5?pageBean.pageNum+5:pageBean.pages}" var="index">
<c:if test="${pageBean.pageNum == index}">
<li class="active"><span>${index}</span></li>
</c:if>
<c:if test="${pageBean.pageNum != index}">
<li>
<a rel="nofollow" href="${pageContext.request.contextPath}/${pageBean.url}/${index}/${pageBean.pageSize}">${index}</a>
</li>
</c:if>
</c:forEach>
</c:if>
<c:if test="${pageBean.pageNum >= pageBean.pages}">
<li class="disabled"><span>下一页</span></li>
</c:if>
<c:if test="${pageBean.pageNum < pageBean.pages}">
<li>
<a rel="nofollow" href="${pageContext.request.contextPath}/${pageBean.url}/${pageBean.pageNum+1}/${pageBean.pageSize}">下一页</a>
</li>
</c:if>
</ul>
效果图

















