基于SpringBoot实现的分页查询(分分钟钟上手)

news2025/7/8 22:44:59

这里是使用的hibernate(不需要写sql)和springboot 也可使用 MyBatis(推荐使用)

下面是使用Spring Boot实现分页查询的示例:

  1. 在pom.xml文件中添加依赖项:
<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- (可选)添加MySQL依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>

  1. 定义一个JPA实体类(例如User),并在该类中添加相应的字段、构造方法和Getter/Setter方法。
  2. User类中添加JPA注解,并指定数据表名、主键等信息。例如:
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

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

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

}
  1. 创建一个UserRepository接口,继承自JpaRepository<User, Long>,并添加方法用于查询分页数据。例如:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    Page<User> findByNameContaining(String keyword, Pageable pageable);
}

其中,findByNameContaining方法用于查询包含关键字的用户列表,Pageable参数用于指定分页相关信息,例如当前页码、每页记录数等。

  1. 创建一个UserController类,定义一个REST接口,用于调用UserRepository中的方法获取用户列表。例如:
@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserRepository userRepository;

    @GetMapping("")
    public ResponseEntity<List<User>> getUsers(@RequestParam(defaultValue = "") String keyword,
                                                @RequestParam(defaultValue = "0") int page,
                                                @RequestParam(defaultValue = "10") int size) {
        // 上面是指定内页显示几条数据
        Pageable pageable = PageRequest.of(page, size);
        Page<User> userPage = userRepository.findByNameContaining(keyword, pageable);
        List<User> userList = userPage.getContent();
        return new ResponseEntity<>(userList, HttpStatus.OK);
    }
}

其中,getUsers方法用于查询用户列表,并将查询结果封装在ResponseEntity中返回给客户端。

  1. 启动Spring Boot应用程序,并访问http://localhost:8080/users,即可查询分页数据。

以上是使用Spring Boot实现分页查询的基本示例。需要注意的是,不同的ORM框架和数据库可能有所差异,具体实现方式也会有所不同。在实际开发中,需要根据具体需求进行适当调整和优化。

在上述示例中,我们使用了JPA作为ORM框架,并且可以使用MySQL作为数据存储库。以下是数据库和数据的相关信息:

  1. 创建一个名为test的数据库:
CREATE DATABASE test;
  1. 创建一个名为user的数据表:
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` varchar(50) DEFAULT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
  1. 插入一些测试数据:
INSERT INTO `user` (`name`, `age`) VALUES ('张三', 18);
INSERT INTO `user` (`name`, `age`) VALUES ('李四', 22);
INSERT INTO `user` (`name`, `age`) VALUES ('王五', 30);
INSERT INTO `user` (`name`, `age`) VALUES ('赵六', 25);
INSERT INTO `user` (`name`, `age`) VALUES ('孙七', 28);
INSERT INTO `user` (`name`, `age`) VALUES ('周八', 31);
INSERT INTO `user` (`name`, `age`) VALUES ('吴九', 20);
INSERT INTO `user` (`name`, `age`) VALUES ('郑十', 24);

以上是使用MySQL作为数据存储库的示例。如果您使用其他数据库或者数据存储库,请根据具体情况进行相应的调整。

以下是使用Spring Boot实现分页查询的示例所需的application.yml配置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
    username: root
    password: yourpassword
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    database-platform: org.hibernate.dialect.MySQL8Dialect
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL8Dialect
        show_sql: true
        format_sql: true
        use_sql_comments: true

  # (可选)开启web服务相关的配置
  servlet:
    context-path: /api

server:
  port: 8080

其中,spring.datasource.url用于指定MySQL数据库的连接地址;spring.datasource.usernamespring.datasource.password用于指定连接数据库时的用户名和密码。如果您使用不同的数据库,需要相应调整这些配置项。

spring.jpa.database-platformspring.jpa.properties.hibernate.dialect等配置用于指定JPA的方言和其他相关属性。

servlet.context-path用于指定Web服务的Context Path,server.port用于指定服务监听的端口号。

在实际应用中,需要根据具体需求进行适当调整和优化,例如修改日志级别、添加安全认证等等。

目录结构如下

请添加图片描述

查询结构如下

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里面经最新分享:Java 面试指南 / 成长笔记(程序员面试必备)

写在前面 又到了收割 Offer 的季节&#xff0c;你准备好了吗&#xff1f;曾经的我&#xff0c;横扫各个大厂的 Offer。还是那句话&#xff1a;进大厂临时抱佛脚是肯定不行的&#xff0c;一定要注重平时的总结和积累&#xff0c;多思考&#xff0c;多积累&#xff0c;多总结&am…

2023年牛客网互联网高级架构师Java面试八股汇总(附答案整理)

此文包含 Java 面试的各个方面&#xff0c;史上最全&#xff0c;苦心整理最全 Java 面试题目整理包括基础JVM算法数据库优化算法数据结构分布式并发编程缓存等&#xff0c;使用层面广&#xff0c;知识量大&#xff0c;涉及你的知识盲点。要想在面试者中出类拔萃就要比人付出更多…

【动态规划】-最小路径和(java)

最小路劲和--动态规划和内存压缩 最小路径和题目描述 动态规划解题思路&#xff1a;代码演示动态规划的内存压缩动态规划专题 最小路径和 题目描述 给定一个二维数组matrix&#xff0c;一个人必须从左上角出发&#xff0c;最后到达右下角 沿途只可以向下或者向右走&#xff0c…

用了7年的 source insight 3.5 背景色及字体配置(提升code效率)

文章目录 背景目的背景护眼色配置字体与编辑选项配置全局配置的保存与加载 背景 今天突然source insight3.5抽风&#xff0c;配置重置了&#xff0c;默认配置很难看。 找了一会儿才找到之前的备份配置&#xff0c;load后舒服了。 目的 在此记录并share用了7年的 source insi…

300页幻灯片图解数据安全风险评估(附下载)

为指导网络数据安全风险评估工作&#xff0c;发现数据安全隐患&#xff0c;防范数据安全风险,依据《中华人民共和国网络安全法》《中华人民共和国数据安全法》《中华人民共和国个人信息保护法》等法律法规&#xff0c;参照数据安全相关国家标准&#xff0c;全国信息安全标准化技…

ChatGPT与VBA:Excel操作一键搞定的全能助手

摘要 Excel是一款广泛应用于数据处理和分析的工具&#xff0c;而VBA&#xff08;Visual Basic for Applications&#xff09;是一种用于编程自动化Excel操作的语言。然而&#xff0c;对于非专业的Excel用户来说&#xff0c;VBA编程可能具有一定的难度。本文将探讨如何利用Chat…

不同规格的磁场线圈适用领域

磁场线圈基于毕奥-萨法尔定律&#xff0c;以绕组中通电流的形式复现磁场的线圈&#xff0c;用于复现标准磁场&#xff0c;是弱磁场计量测试领域最主要的标准器具之一。按所复现的磁场类型可分为恒定磁场线圈、交变磁场线圈、梯度磁场线圈、脉冲磁场线圈等&#xff0c;按结构可分…

AIX5.3安装Python3遇到的坑

最近在折腾AIX5.3&#xff0c;这是一款非常古老的power架构的服务器&#xff0c;目前IBM官方已经不维护&#xff0c;但是仍然在很多银行里跑着比较核心的业务&#xff0c;由于我们的客户大部分是面向银行&#xff0c;少不了要做AIX5.3上的应用软件适配。本文记录在AIX5.3上编译…

51单片机——DS18B20 温度传感器实验,小白讲解,相互学习

DS18B20 介绍 DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线&#xff08;单总线&#xff09;”接 口的温度传感器。与传统的热敏电阻等测温元件相比&#xff0c;它是一种新型的体积小、 适用电压宽、与微处理器接口简单的数字化温度传感器。 DS18B20 温度传感器具有如…

linuxOPS基础_linux常用自有服务(ntp,firewalld,crond)

linux常用自有服务 服务名含义ntpd用于同步计算机的系统时间的服务firewalld防火墙服务crond计划任务服务 ntp时间同步服务 NTP是网络时间协议(Network Time Protocol)&#xff0c;它是用来同步网络中各个计算机的时间的协议。 工作场景&#xff1a; ​ 公司开发了一个电商…

Jmeter教程 —— 简单的压力测试

Jmeter是一个非常好用的压力测试工具&#xff0c;可以用来做轻量级的压力测试&#xff0c;非常合适&#xff0c;只需要十几分钟&#xff0c;就能把压力测试需要的脚本写好。 什么是压力测试 顾名思义&#xff1a;压力测试&#xff0c;就是 被测试的系统&#xff0c;在一定的…

Android Studio查看第三方库依赖树

在Android开发过程中&#xff0c;我们或多或少都会引入第三方库&#xff0c;引入的库越多&#xff0c;越容易产生库之间的依赖冲突&#xff0c;所以我们今天一起来了解Android Studio查看第三方库依赖树。 下面就拿我遇到的问题还原一下&#xff1a; 之前接人容联客服系统的时候…

工作小技巧,封装if和Exception

在我们的工作中&#xff0c;经常会有这样的逻辑&#xff0c;就是判断一个参数是否合法&#xff0c;不合法就抛出异常&#xff0c;再由全局异常捕获后返回。 本文使用我编写的springboot日记本系统作为蓝本&#xff0c;&#xff0c;在已有项目的基础上改&#xff0c;源码下载地…

思科小型网络配置实例

一、配置思路 1.交换机上配置端口连接描述&#xff0c;在实际工作中很有用 2.外网配置&#xff0c;模拟外网&#xff1a;PC的IP地址200.200.200.2&#xff0c;Server的IP地址是200.200.200.3&#xff0c;网关都是200.200.200.1。SW-ISP的连接PC和Server-ISP的口属于vlan 3,&…

【vue】二:核心处理---vue的生命周期

文章目录 1.Vue生命周期的四个阶段&#xff0c;八个钩子2.vue的生命周期图例3. 初始阶段&#xff1a;虚拟DOM生成4. 挂载阶段&#xff1a;真实DOM生成5. 更新阶段&#xff1a;data变化重新渲染6. 销毁阶段&#xff1a;卸载所有&#xff0c;销毁vm 1.Vue生命周期的四个阶段&…

Appium利用xpath查找同级节点兄弟节点方法

当页面存在两个文件夹&#xff0c;结构相同&#xff0c;只有文件夹名称不同时&#xff0c;想要点击某一个文件夹上的某个控件。这个时候需要使用xpath定位。 1.由父节点定位子节点 driver.findElementByXPath(//XCUIElementTypeCell/XCUIElementTypeStaticText[name"标签…

Java网络开发(Tomcat)—— 用Jsp语法 到 实现数据的分页展示 到 只看自己的数据 + 模糊查询 迭代升级

目录 引出0.jsp的使用和语法 & 报错和解决&#xff08;1&#xff09;后端共享&#xff0c;前端获取 ${pageInfo}&#xff08;2&#xff09;如果想获取pageInfo这个对象的某个属性值&#xff0c;用 点 属性 ${pageInfo.pages}&#xff08;3&#xff09;如果想回传&#xff…

前端性能测试必备测试工具

我们在使用网站过程中&#xff0c;经常会遇到慢的问题&#xff0c;为了找到原因&#xff0c;一般需要借助工具进行检测&#xff0c;通过工具&#xff0c;可以检测出前端站点加载资源的相关详细情况。 今天&#xff0c;就给大家介绍几款前端性能测试分析工具&#xff0c;结合性能…

为什么性能测试PR单机版要升级到P-One一站式性能测试平台

目前市面上常用的性能测试工具均为单机版&#xff0c;导致了一些问题&#xff1a; 1.脚本无法进行共享&#xff1b; 2.执行管理无法进行统一化、协同化管理&#xff1b; 3.项目经理只能通过日报或者线下沟通获取当前项目进度&#xff1b; 4.对测试结果只能通过文件传输的方式进…

Linux安装Nginx详细教程

文章目录 下载安装包开始安装相关命令 下载安装包 官网下载&#xff1a;http://nginx.org/en/download.html 自己找一个安装目录 我这里进入到usr/local下创建一个安装软件目录 cd /usr/local mkdir softwore cd softwore使用ftp工具或者windows命令行将下载好的nginx安装包…