SpringBoot2 实现JPA分页和排序分页的案例

下面是关于“SpringBoot2 实现JPA分页和排序分页的案例”的完整攻略:

1. 简介

SpringBoot是一款轻量级的Java开发框架,它可以用来构建各种类型的Web应用程序。其中,JPA(Java Persistence API)是Java EE规范的一部分,用于管理Java对象和关系型数据库之间的映射关系。JPA的分页和排序功能在实际开发中非常有用。

2. 实现JPA分页

2.1 添加maven依赖

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

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

pagehelper是一款用于Mybatis和Hibernate的分页插件,其与SpringBoot完美集成,同时也可以用于JPA分页。

2.2 添加Repository

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

2.3 添加Service

@Service
public class UserServiceImpl implements UserService{

    @Autowired
    private UserRepository userRepository;

    @Override
    public PageInfo<User> findPage(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        List<User> userList = userRepository.findAll();
        return new PageInfo<>(userList);
    }
}

2.4 添加Controller

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public PageInfo<User> getUsers(@RequestParam("pageNum")int pageNum,
                                        @RequestParam("pageSize")int pageSize){
        return userService.findPage(pageNum,pageSize);

    }
}

2.5 效果演示

启动SpringBoot应用,并访问http://localhost:8080/users?pageNum=1&pageSize=10,该接口将返回第1页每页10个用户的信息。

3. 实现JPA排序分页

3.1 添加Repository

@Repository
public interface UserRepository extends JpaRepository<User,Long> {

    //排序分页
    Page<User> findAll(Pageable pageable);
}

3.2 添加Service

@Service
public class UserServiceImpl implements UserService{

    @Autowired
    private UserRepository userRepository;


    @Override
    public Page<User> findPageAndSort(int pageNum, int pageSize,String sortField,String sortOrder) {
        Sort sort = Sort.by(Sort.Direction.fromString(sortOrder),sortField);
        Pageable pageable = PageRequest.of(pageNum,pageSize,sort);
        return userRepository.findAll(pageable);
    }
}

3.3 添加Controller

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public Page<User> getUsers(@RequestParam("pageNum")int pageNum,
                                        @RequestParam("pageSize")int pageSize,
                                        @RequestParam(value = "sortField", defaultValue = "id")String sortField,
                                        @RequestParam(value = "sortOrder", defaultValue = "ASC")String sortOrder){
        return userService.findPageAndSort(pageNum,pageSize,sortField,sortOrder);

    }
}

3.4 效果演示

启动SpringBoot应用,并访问http://localhost:8080/users?pageNum=1&pageSize=10&sortField=age&sortOrder=DESC,该接口将返回第1页每页10个用户的信息,并按照age字段进行降序排序。

以上就是使用SpringBoot2实现JPA分页和排序分页的案例的完整攻略。

下面是两个示例说明:

示例1

需求:查询用户表中年龄大于等于18岁的用户,按照行id升序排序,取第1页,每页10个用户。

请求URL:http://localhost:8080/users?age=18&pageNum=1&pageSize=10&sortField=id&sortOrder=ASC

响应数据:

{
    "content": [
        {
            "id": 1,
            "name": "张三",
            "age": 18,
            "phone": "18888888888"
        },
        {
            "id": 2,
            "name": "李四",
            "age": 19,
            "phone": "17777777777"
        },
        ...
    ],
    "totalPages": 2,
    "totalElements": 13,
    "number": 1,
    "size": 10,
    "sort": [
        {
            "direction": "ASC",
            "property": "id",
            "ignoreCase": false,
            "nullHandling": "NATIVE",
            "ascending": true,
            "descending": false
        }
    ],
    "first": true,
    "last": false,
    "empty": false
}

示例2

需求:查询年龄大于等于20岁的用户,按照年龄降序排序,取第3页,每页20个用户。

请求URL:http://localhost:8080/users?age=20&pageNum=3&pageSize=20&sortField=age&sortOrder=DESC

响应数据:

{
    "content": [
        {
            "id": 17,
            "name": "小明",
            "age": 20,
            "phone": "16666666666"
        },
        {
            "id": 11,
            "name": "张三丰",
            "age": 20,
            "phone": "17777777777"
        },
        ...
    ],
    "totalPages": 1,
    "totalElements": 12,
    "number": 2,
    "size": 20,
    "sort": [
        {
            "direction": "DESC",
            "property": "age",
            "ignoreCase": false,
            "nullHandling": "NATIVE",
            "ascending": false,
            "descending": true
        }
    ],
    "first": false,
    "last": true,
    "empty": false
}

以上就是关于“SpringBoot2 实现JPA分页和排序分页的案例”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot2 实现JPA分页和排序分页的案例 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • 如何将javaweb项目部署到linux下

    下面是如何将Java Web项目部署到Linux下的完整攻略。 步骤一:准备工作 在将Java Web项目部署到Linux下之前,我们需要准备以下工具: 一台运行Linux操作系统的服务器 Java开发包(JDK) Tomcat服务器 Maven构建工具 Git版本控制工具 步骤二:编写代码并打包 在准备好工具之后,我们需要编写Java Web项目的代码并将…

    Java 2023年5月20日
    00
  • Spring Boot Starters简介及其优劣势

    SpringBootStarters简介及其优劣势 什么是SpringBoot Starters? SpringBoot Starters是一种快速构建Spring应用程序的方式,它旨在减少开发人员的配置工作量。SpringBoot提供了一系列官方的Starters,每个Starter都预配置了一个或多个Spring应用程序需要的依赖关系。 SpringBo…

    Java 2023年5月15日
    00
  • Java实现读取及生成Excel文件的方法

    生成Excel文件可以使用Apache POI库,读取Excel文件可以使用JXL或者Apache POI库。 使用Apache POI进行Excel文件读取及生成 要使用Apache POI进行Excel文件处理,需要添加以下maven依赖: <dependency> <groupId>org.apache.poi</grou…

    Java 2023年5月20日
    00
  • java Spring Boot的介绍与初体验

    Java Spring Boot的介绍与初体验攻略 1. 什么是Java Spring Boot? Spring Boot是一个快速开发框架,用于构建基于Spring框架的应用程序,其主要目的是简化Spring应用程序的初始搭建以及开发过程。 Spring Boot使用自动化配置来尽可能减少开发人员的配置任务,大大提高了开发效率。此外,它还提供了许多其他特性…

    Java 2023年5月15日
    00
  • IDEA的基本使用(让你的IDEA有飞一般的感觉)

    下面就为您详细讲解“IDEA的基本使用(让你的IDEA有飞一般的感觉)”的完整攻略。 1. 什么是IDEA IntelliJ IDEA是一款由JetBrains公司开发的Java集成开发环境(IDE)。除了Java外,它还支持各种各样的编程语言,如Kotlin、Groovy和Scala等。在软件开发中,工具的重要性与代码编写同等重要,好的IDE可以帮助我们更…

    Java 2023年5月20日
    00
  • Spring Cloud 配置中心内容加密的配置方法

    下面是Spring Cloud中配置中心内容加密的配置方法的完整攻略。 1. 加密配置信息 首先,我们需要在配置中心中加密敏感信息,并把加密后的密文保存在Git仓库中,例如: spring.datasource.password={cipher}EncryptedPassword 其中,{cipher}指定了使用加密算法,EncryptedPassword是…

    Java 2023年5月20日
    00
  • java单例五种实现模式解析

    Java单例五种实现模式解析 什么是单例模式? 单例模式是指一个类只能被实例化一次,并且全局都可以访问到这个实例。在实际开发中,很多情况下我们只需要一个实例,例如全局配置信息、日志管理等等,这时候使用单例模式可以节省系统资源,减少不必要的开销。 单例模式的特点 保证一个类只有一个实例。 提供一个访问该实例的全局入口。 不能被其他对象实例化。 五种实现模式 1…

    Java 2023年5月26日
    00
  • 二十分钟 教你Ruby快速入门 图文教程第1/4页

    下面进行对“二十分钟 教你Ruby快速入门 图文教程第1/4页”的完整攻略的详细讲解。 攻略内容 1. 环境搭建 首先,你需要在自己的电脑中安装 Ruby 程序,可以到 Ruby官网 下载相应的安装包,根据自己电脑的操作系统选择适合自己的安装程序。 安装完成后,可通过命令行工具输入 ruby -v 进行检查,若返回了相应版本号则说明安装成功。 2. Hell…

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