本博客中使用到的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>

效果图

请添加图片描述