SpringData JPA实现查询分页demo

下面我会给出 Spring Data JPA 实现查询分页 Demo 的详细攻略。

1. 添加依赖

在项目的 pom.xml 文件中添加 Spring Data JPA 依赖:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>2.5.3</version>
</dependency>

同时,为了方便开发,我们也可以添加 PageHelper 分页插件的依赖:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

2. 配置 JPA

在 Spring Boot 项目中,我们可以使用 application.properties 或 application.yml 文件配置数据库信息,例如:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
    username: root
    password: 123456
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL8Dialect
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    show-sql: true
    hibernate:
      ddl-auto: none
    database-platform: ${spring.jpa.properties.hibernate.dialect}

然后在项目中创建对应的 Entity 类和 Repository 接口:

@Entity
@Table(name = "user")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class UserEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String email;
}
public interface UserRepository extends JpaRepository<UserEntity, Long> {
}

3. 编写代码

接下来,我们就可以编写代码实现分页查询了。这里以一个简单的 UserService 类作为例子:

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public List<UserEntity> findAll(int pageNum, int pageSize) {
        // 设置分页参数
        PageHelper.startPage(pageNum, pageSize);

        // 查询数据
        List<UserEntity> users = userRepository.findAll();

        // 返回分页结果
        PageInfo<UserEntity> pageInfo = new PageInfo<>(users);
        return pageInfo.getList();
    }
}

上述代码中,我们通过 PageHelper.startPage(...) 方法来设置分页参数,然后通过 userRepository.findAll() 方法来查询数据,并将查询结果通过 PageInfo 对象封装成分页格式后返回。

4. 示例展示

下面展示两个示例。

示例1:使用 Postman 测试

如果你已经完成了前面所有步骤,那么你可以使用 Postman 这个强大的 API 开发工具来测试你的分页查询 API 。在 Postman 中,你可以使用 GET 请求访问你的 API 地址:

http://localhost:8080/api/users?pageNum=1&pageSize=10

其中,pageNum 表示当前页数,pageSize 表示每页显示的数据量。你可以根据需求调整这两个参数的值。

示例2:在 Thymeleaf 中使用

如果你想在 Thymeleaf 视图中使用分页查询,在你的 Controller 中添加如下代码:

@RequestMapping("/users")
public String getUsers(@RequestParam(defaultValue = "1") int pageNum,
                       @RequestParam(defaultValue = "10") int pageSize,
                       Model model) {
    // 查询数据
    List<UserEntity> users = userService.findAll(pageNum, pageSize);

    // 将数据和分页参数存入 Model 中
    PageInfo<UserEntity> pageInfo = new PageInfo<>(users);
    model.addAttribute("users", pageInfo.getList());
    model.addAttribute("pageInfo", pageInfo);

    // 渲染视图
    return "users";
}

然后在你的 users.html 文件中添加如下代码:

<div th:each="user : ${users}">
    <div th:text="${user.name}"></div>
</div>

<div th:if="${pageInfo.pages>1}">
    <ul>
        <li th:class="${pageInfo.hasPreviousPage} ? 'disabled' : ''">
            <a th:href="${pageInfo.hasPreviousPage()} ? @{${#httpServletRequest.requestURI}}?pageNum=${pageInfo.prePage}&amp;pageSize=${pageInfo.pageSize}">&laquo;</a>
        </li>
        <li th:each="page : ${pageInfo.navigatepageNums}" th:class="${page.current} ? 'active' : ''">
            <a th:href="@{${#httpServletRequest.requestURI}}?pageNum=${page}">${page}</a>
        </li>
        <li th:class="${pageInfo.hasNextPage} ? 'disabled' : ''">
            <a th:href="${pageInfo.hasNextPage()} ? @{${#httpServletRequest.requestURI}}?pageNum=${pageInfo.nextPage}&amp;pageSize=${pageInfo.pageSize}">&raquo;</a>
        </li>
    </ul>
</div>

其中,users 是前面 Controller 中注入的数据列表。pageInfo 是一个分页对象,包含了当前页数、每页显示的数据量、总记录数、总页数等分页参数。我们使用 Thymeleaf 的 th:each 循环列表,并在分页列表中展示对应的页码。

以上就是 Spring Data JPA 实现查询分页 Demo 的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringData JPA实现查询分页demo - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 基于logback 实现springboot超级详细的日志配置

    基于logback实现Spring Boot超级详细的日志配置 在Spring Boot应用程序中,日志是非常重要的。它可以帮助我们快速定位问题,提高应用程序的可维护性和可用性。本文将详细讲解如何基于logback实现Spring Boot超级详细的日志配置,并提供两个示例。 1. 添加依赖 在pom.xml文件中添加以下依赖: <dependency…

    Java 2023年5月15日
    00
  • org.apache.ibatis.binding.BindingException异常报错原因以及详细解决方案

    先给一下org.apache.ibatis.binding.BindingException异常的概述: BindingException是MyBatis中的绑定异常,当Mapper接口和Mapper映射文件出现错误时抛出。在MyBatis中,Mapper接口和Mapper映射文件是对应绑定的,如果Mapper接口方法的参数、返回值类型或SQL语句等配置错误…

    Java 2023年5月27日
    00
  • Spring源码:Bean生命周期(三)

    前言 在之前的文章中,我们已经对 bean 的准备工作进行了讲解,包括 bean 定义和 FactoryBean 判断等。在这个基础上,我们可以更加深入地理解 getBean 方法的实现逻辑,并在后续的学习中更好地掌握createBean 方法的实现细节。 getBean用法 讲解getBean方法之前,我们先来看看他有几种常见的用法: // 创建一个Spr…

    Java 2023年5月4日
    00
  • js阻止默认浏览器行为与冒泡行为的实现代码

    阻止默认浏览器行为和阻止冒泡事件是JavaScript中常用的操作。在以下的示例中,假设有一个HTML页面和一个按钮,我们将通过代码示例来演示如何阻止默认浏览器行为和阻止冒泡事件。 阻止默认浏览器行为 默认情况下,当用户点击一个链接或提交表单时,浏览器会自动执行一些动作。有时候我们需要阻止这些默认的动作,那么如何实现它呢?下面是一个实现阻止默认行为的示例代码…

    Java 2023年6月15日
    00
  • Springboot WebJar打包及使用实现流程解析

    下面提供关于SpringBoot使用WebJar的完整攻略,包括打包和实现流程解析。 什么是WebJar WebJar 是一个将客户端 Web 应用程序的广泛的客户端库打包成 JAR 文件的项目。 这是一个 Maven 仓库中的普通 JAR 文件,但它包含关于静态资源(如 CSS、JavaScript 等)的有用的元数据。 使用 WebJar 您不仅可以更轻…

    Java 2023年5月19日
    00
  • Android UI设计与开发之ViewPager仿微信引导界面以及动画效果

    Android UI设计与开发之ViewPager仿微信引导界面以及动画效果 一. 引言 Android应用程序作为目前最主流的平台之一,UI设计的重要性越来越突出。ViewPager是Android UI界面设计中重要的一个组件,可以轻松实现左右滑动来切换不同View的效果,因此被广泛应用于app引导界面的设计中。 本文将详细讲解如何使用ViewPager…

    Java 2023年6月1日
    00
  • 什么是Java多线程,如何实现

    什么是Java多线程? 多线程是指在一个程序中同时运行多个线程,并行执行多个任务的技术。Java是一种多线程编程语言,提供了丰富的多线程API,使得开发者可以轻松地创建多线程应用程序。 在Java中,每个线程都是一种独立的执行路径,每个线程都会独立地执行自己的代码和内存空间,并且可以互不干扰的访问其它线程中的数据。 如何实现Java多线程? Java提供了两…

    Java 2023年5月19日
    00
  • WIN2003下IIS6集成一个或多个Tomcat的方法

    下面是WIN2003下IIS6集成一个或多个Tomcat的步骤详解,过程中会有两条示例,供参考: 1. 安装Tomcat 首先,在Windows服务器上安装一个或多个Tomcat实例。具体步骤如下: 下载Tomcat二进制文件并解压缩到任意目录(例如 D:\tomcat)。 配置Tomcat启动方式,可以使用Windows service或Startup保持…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部