springboot+jpa分页插件(Pageable+Page)

Posted chuangqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot+jpa分页插件(Pageable+Page)相关的知识,希望对你有一定的参考价值。

Pageable+Page实现分页无需配置,也不需要加入jar包(maven依赖)

Controller控制层

package com.gxuwz.late.controller;

import com.gxuwz.late.bean.Record;
import com.gxuwz.late.repository.RecordRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletResponse;

@Controller
@RequestMapping("/manager")
public class ManagerController 
    static Logger logger = LoggerFactory.getLogger(ManagerController.class);

    @Autowired
    RecordRepository recordRepository;

    @RequestMapping("/list")
    public String list(HttpServletResponse response, Model model, Integer pageNum)
                       
        if (pageNum == null)
            pageNum = 1;
        
        Sort sort = new Sort(Sort.Direction.DESC, "recordNo");  // 这里的"recordNO"是实体类的主键,记住一定要是实体类的字段,而不能是数据库的字段
        Pageable pageable = new PageRequest(pageNum - 1, 6, sort);
        Page<Record> list = recordRepository.findAll(pageable);

        logger.info("pageNum==" + pageNum);

        model.addAttribute("pageInfo", list);

        logger.info("pageInfo=>" + list.getContent().get(0).getClassName());
        response.addHeader("x-frame-options","SAMEORIGIN");  // 允许iframe
        return "record_list";
    

html页面

<table id = "dormitory_table" class="table table-hover text-center">
              <tr>
                <th>晚归记录编号</th>
                <th>宿舍楼编号</th>
                <th>宿舍号</th>
                <th>学号</th>
                <th>班级</th>
                <th>辅导员</th>
                <th>晚归时间</th>
                <th>晚归原因</th>
                <th>操作</th>
              </tr>
                <tr th:each="record:$pageInfo.getContent()">
                    <td th:text="$record.recordNo "></td>
                    <td th:text="$record.buildingNo "></td>
                    <td th:text="$record.dorId "></td>
                    <td th:text="$record.studentNo "></td>
                    <td th:text="$record.className "></td>
                    <td th:text="$record.instName "></td>
                    <td th:text="$record.time "></td>
                    <td th:text="$record.reason "></td>
                </tr>
                  <tr>
                    <td colspan="8">
                        <div class="pagelist">
                            <p>当前<span th:text="$pageInfo.getNumber() + 1"></span>页,总<span th:text="$pageInfo.totalPages"></span>
                            <a th:href="@/manager/list">首页</a>
                            <a th:href="@/manager/list(pageNum = $pageInfo.hasPrevious() ? $pageInfo.getNumber()  : 1)">上一页</a>
                            <a th:href="@/manager/list(pageNum = $pageInfo.hasNext() ? $pageInfo.getNumber() + 2 : $pageInfo.totalPages)">下一页</a>
                            <a th:href="@/manager/list(pageNum = $pageInfo.totalPages)">尾页</a></p>
                        </div>

                    </td>
              </tr>
            </table>

实现效果:

技术图片

jpa用pagehelper的话容易出现问题:如的pageSize无效,分页无效

以上是关于springboot+jpa分页插件(Pageable+Page)的主要内容,如果未能解决你的问题,请参考以下文章

springboot整合mongodb复杂查询和分页查询

springboot封装好的分页,怎么调用

SpringBoot Jpa 分页查询最新配置方式

IntelliJ IDEA 2017版 spring-boot2.0.2 搭建 JPA springboot DataSource JPA sort排序方法使用方式, 添加关联表的 order by

用SpringBoot+MySql+JPA实现对数据库的增删改查和分页

springboot jpa mongodb 多条件分页查询