Spring Data Jpa框架最佳实践示例

Spring Data JPA 是 Spring 基于 ORM 框架 JPA 封装的一套 CRUD 框架,可以极大简化恶心的JPA代码量和复杂度。然而,最佳实践的框架使用方式要求开发人员对于 Spring Data JPA 以及 JPA 有充分的理解和掌握。

本篇攻略将介绍 Spring Data JPA 框架的最佳实践,并给出两条实例。

一.基本配置

1.在项目 pom.xml 文件的 dependencies 中加入 spring boot starter data JPA 和 MySQL 驱动

<dependencies>
    <!-- Spring Boot 相关 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Boot Data JPA ,相关的 ORM 功能会自动注入 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MySQL 驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

2.在 application.yml 文件中配置 MySQL 数据库连接信息

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    show-sql: true
    hibernate:
      ddl-auto: update

3.定义实体类

@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private LocalDate birthday;
}

二.使用

1.Spring Data JPA 提供了一系列的统一命名方式,封装了通用的增删改查(CRUD)操作,无需再编写 SQL 语句进行数据库操作。通常我们使用扩展了 CrudRepository 的 Repository.

public interface UserRepository extends CrudRepository<User, Integer> {
    Optional<User> findUserById(Integer id);
    List<User> findUsersByNameLike(String name);
}

2.数据存储

@RestController
@RequestMapping("/crud")
@AllArgsConstructor
public class UserCRUDController {

    private final UserRepository userRepository;

    @PostMapping("/save")
    public String save(User user) {
        userRepository.save(user);
        return "success";
    }

    @PostMapping("/saveAll")
    public String saveAll(List<User> userList) {
        Iterable<User> users = userRepository.saveAll(userList);
        return "success";
    }
}

3.数据查询

@RestController
@RequestMapping("/query")
@AllArgsConstructor
public class UserQueryController {

    private final UserRepository userRepository;

    @GetMapping("/find/{id}")
    public User find(@PathVariable Integer id) {
        Optional<User> userOptional = userRepository.findById(id);
        return userOptional.isPresent() ? userOptional.get() : null;
    }

    @GetMapping("findId/{id}")
    public User findId(@PathVariable Integer id) {
        Optional<User> userOptional = userRepository.findUserById(id);
        return userOptional.isPresent() ? userOptional.get() : null;
    }

    @GetMapping("/findName/{name}")
    public List<User> findName(@PathVariable String name) {
        return userRepository.findUsersByNameLike("%" + name  + "%");
    }

    @PutMapping("/update")
    public String update(User user) {
        User save = userRepository.save(user);
        return "success";
    }

    @GetMapping("/delete/{id}")
    public String delete(@PathVariable Integer id) {
        userRepository.deleteById(id);
        return "success";
    }
}

以上分别是数据存储和数据查询的两个示例。

希望这篇攻略对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Data Jpa框架最佳实践示例 - Python技术站

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

相关文章

  • SpringBoot配置使用H2数据库的简单教程

    下面是关于”SpringBoot配置使用H2数据库的简单教程”的完整攻略,包含有两条示例: 目录 环境要求 新建SpringBoot项目 配置H2数据库 使用H2数据库 方法一:使用浏览器访问H2数据库 方法二:使用SQL客户端访问H2数据库 环境要求 Java 8 Maven 3 SpringBoot 新建SpringBoot项目 首先我们需要新建一个Sp…

    Java 2023年6月1日
    00
  • JDK源码分析之String、StringBuilder和StringBuffer

    JDK源码分析之String、StringBuilder和StringBuffer 什么是String、StringBuilder和StringBuffer String是Java中的一个不可变字符序列,使用final char[] value来存储数据,也就是说,一旦被初始化,就不能再对其进行修改。 StringBuilder和StringBuffer实现…

    Java 2023年5月26日
    00
  • 详解如何热更新线上的Java服务器代码

    热更新线上的Java服务器代码是一项非常重要的工作,它可以帮助优化服务器运维和开发流程,从而提升系统的稳定性和可靠性。下面是我总结的详解热更新Java服务器代码的攻略: 1. 什么是热更新 所谓热更新,是指在不停机的情况下,将Java服务器代码替换成新的代码,从而实现在线上更新代码的目的。相比传统的停机更新方式,热更新更加方便快捷,不会对用户造成影响和中断服…

    Java 2023年6月16日
    00
  • 关于在Java中反转数组的4种详细方法

    针对“关于在Java中反转数组的4种详细方法”,我可以给出以下几种方式: 1. 使用for循环逆序遍历数组 public static void reverseWithForLoop(int[] arr) { int len = arr.length; for (int i = len – 1; i >= len / 2; i–) { int tem…

    Java 2023年5月26日
    00
  • JSP中隐式对象用法实例

    JSP中隐式对象是指在JSP页面中无需实例化即可使用的Java对象,在使用时只需要使用关键词即可。JSP中有9个隐式对象,包括request、response、pageContext、session、application、out、config、page和exception。 以下是使用JSP中隐式对象的一些示例说明: 示例一:使用request对象获取客户…

    Java 2023年6月15日
    00
  • Java String方法获取字符出现次数及字符最大相同部分示例

    实现获取字符出现次数和字符最大相同部分功能可以使用Java String类的一些方法,本攻略将详细讲解如何使用这些方法完成这些功能。 Java String方法获取字符出现次数 步骤1:获取输入字符串 首先,需要获取用户输入的字符串。这可以通过Java Scanner类实现。 import java.util.Scanner; public class St…

    Java 2023年5月27日
    00
  • Java对文本文件MD5加密并ftp传送到远程主机目录的实现方法

    这里提供一种Java对文本文件MD5加密并ftp传送到远程主机目录的实现方法,共分为以下几个步骤: 步骤一:导入必要的依赖库 Java的MD5加密算法和FTP传输需要用到两个依赖库:commons-codec和commons-net。所以,需要在Java项目中导入相应的依赖库,示例代码如下: <dependency> <groupId&gt…

    Java 2023年5月23日
    00
  • Java JVM内存区域详解

    Java JVM内存区域详解 简介 Java虚拟机(Java Virtual Machine,JVM)是Java语言的核心和基础,是Java实现”一次编写,到处运行”特性的核心。在JVM中,Java程序在运行时会占用不同的内存区域,这些内存区域分别承担着不同的作用,在理解Java程序运行机制时,对这些内存区域有深入的认识很有帮助。 Java JVM内存区域介…

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