在Spring Boot中使用Spring-data-jpa实现分页查询

yizhihongxing

下面是在Spring Boot中使用Spring-data-jpa实现分页查询的完整攻略。

步骤一:添加依赖

pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

步骤二:配置数据源

application.properties文件中添加以下配置:

spring.datasource.url=jdbc:mysql://localhost:3306/example_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create

步骤三:创建实体类

创建一个实体类User,代码如下:

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;

    // getters and setters
}

步骤四:创建Repository

创建一个RepositoryUserRepository,代码如下:

public interface UserRepository extends JpaRepository<User, Long> {
}

步骤五:实现分页查询

在Controller中注入UserRepository,通过调用findAll(Pageable pageable)方法实现分页查询:

@RestController
public class UserController {
    @Autowired
    private UserRepository userRepository;

    @GetMapping("/users")
    public List<User> getUsers(@RequestParam(defaultValue = "0") Integer pageNo,
                               @RequestParam(defaultValue = "10") Integer pageSize,
                               @RequestParam(defaultValue = "id") String sortBy) {
        Pageable pageable = PageRequest.of(pageNo, pageSize, Sort.by(sortBy));
        Page<User> result = userRepository.findAll(pageable);
        return result.getContent();
    }
}

其中,PageRequest.of()方法用于创建一个Pageable对象,方法参数依次为:当前页码、每页显示数量、排序规则。

示例一:基础分页查询

访问/users?pageNo=0&pageSize=3&sortBy=id,表示查询第一页,每页显示3条记录,按照ID升序排序。

[
    {
        "id": 1,
        "name": "张三",
        "age": 18
    },
    {
        "id": 2,
        "name": "李四",
        "age": 20
    },
    {
        "id": 3,
        "name": "王五",
        "age": 22
    }
]

示例二:分页查询加条件筛选

UserRepository中添加方法findByNameContaining(String name, Pageable pageable),用于根据姓名模糊查询用户:

public interface UserRepository extends JpaRepository<User, Long> {
    Page<User> findByNameContaining(String name, Pageable pageable);
}

UserController中添加方法getUsersByName(),代码如下:

@GetMapping("/usersByName")
public List<User> getUsersByName(@RequestParam(defaultValue = "0") Integer pageNo,
                                 @RequestParam(defaultValue = "10") Integer pageSize,
                                 @RequestParam("name") String name) {
    Pageable pageable = PageRequest.of(pageNo, pageSize, Sort.by("id").ascending());
    Page<User> result = userRepository.findByNameContaining(name, pageable);
    return result.getContent();
}

访问/usersByName?name=张&pageNo=0&pageSize=3,表示查询姓名带有“张”字的用户,第一页,每页显示3条记录。

[
    {
        "id": 1,
        "name": "张三",
        "age": 18
    },
    {
        "id": 4,
        "name": "张飞",
        "age": 25
    },
    {
        "id": 6,
        "name": "张无忌",
        "age": 30
    }
]

至此,就完成了在Spring Boot中使用Spring-data-jpa实现分页查询的攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Spring Boot中使用Spring-data-jpa实现分页查询 - Python技术站

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

相关文章

  • SpringBoot实现多个子域共享cookie的示例

    下面将详细讲解SpringBoot实现多个子域共享cookie的完整攻略。首先我们需要了解什么是cookie和域名。 什么是cookie和域名? HTTP Cookie,一般简称 Cookie,指某些网站为了辨别用户身份、进行 session 跟踪而存储在用户本地终端上的数据(通常经过加密)。 而域名,是互联网上用于区分不同网站的名称。例如在www.exam…

    Java 2023年5月19日
    00
  • java实现时钟表盘

    下面我将详细讲解Java实现时钟表盘的完整攻略。 环境准备 首先需要确保你的电脑上已经安装了JDK环境,并且配置了相应的环境变量。然后你需要找到适合的Java集成开发环境,例如Eclipse、IntelliJ IDEA等,这里我们以Eclipse为例。 构建项目 打开Eclipse,选择”New” -> “Java Project”。 输入项目名称,点…

    Java 2023年6月1日
    00
  • Java基础之SpringBoot整合knife4j

    Java基础之SpringBoot整合knife4j 本文将介绍如何在SpringBoot项目中整合knife4j,以便于更强大的API文档管理和展示。 前置条件 在开始整合之前,需要确保已经具备以下条件: 熟悉Java基础知识; 熟悉SpringBoot框架; 了解Swagger(Swagger是Knife4j的核心依赖)。 整合步骤 1. 引入依赖 在p…

    Java 2023年5月19日
    00
  • Tomcat中catalina.out 和 catalina.log的区别和用途详解

    Tomcat是一个基于Java的开源Web服务器,它是一种轻量级应用服务器,功能强大,广泛应用于Web应用程序的开发和部署。Tomcat中的catalina.out和catalina.log是服务器日志文件,这两个文件虽然非常重要,但作用有一些差别。 catalina.out catalina.out是Tomcat的标准输出文件,它记录了Tomcat启动、停…

    Java 2023年5月19日
    00
  • Eclipse与MySQL数据库的连接教程(已实操)

    Eclipse与MySQL数据库的连接教程包括以下步骤: 步骤1:下载安装Eclipse 首先需要从Eclipse官方网站下载最新版本的Eclipse IDE包,并进行安装。在安装时需要选择Java开发工具包(JDK)以便进行Java项目的开发。 步骤2:下载安装MySQL数据库 可从MySQL官网下载最新版本的MySQL数据库,并进行安装。在安装时要注意设…

    Java 2023年6月16日
    00
  • 详解Java的位运算

    详解Java的位运算 什么是位运算 位运算是计算机中一种对数值的二进制位进行操作的一种运算。在Java中,主要有以下几种位运算符: 运算符 描述 & 按位与 | 按位或 ^ 按位异或 ~ 按位取反 << 左移位 >> 右移位 >>> 无符号右移位 按位与(&) 按位与是将两个操作数的每一位进行比较,都…

    Java 2023年5月26日
    00
  • 用连接池提高Servlet访问数据库的效率(2)

    使用连接池可以有效提高Servlet访问数据库的效率,主要因为连接池可以减少数据库连接的创建和释放所花费的时间,以及避免因为连接未关闭而导致的数据库连接泄露问题。 以下是使用连接池进行Servlet访问数据库的攻略: 1. 导入数据库连接池依赖 使用连接池需要先导入对应的依赖包。常见的数据库连接池有C3P0、Druid等。以C3P0为例,可以使用以下Mave…

    Java 2023年6月15日
    00
  • 使用@Value为静态变量导入并使用导入的静态变量进行初始化方式

    下面是”使用@Value为静态变量导入并使用导入的静态变量进行初始化方式”的完整攻略。 什么是@Value注解? 在Spring中,@Value注解可以用于从外部文件中加载配置值或者在运行时从环境变量中获取配置值,然后赋值给一个属性或类静态变量。 使用@Value导入静态变量 Spring允许我们使用@Value导入静态变量。只需要在使用该注解时加上静态变量…

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