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日

相关文章

  • Hibernate中load方法与get方法的区别

    Hibernate中load方法与get方法的区别是开发人员在进行对象查询时最常见的问题之一,下面是一份详细的攻略,希望对您有所帮助。 1. 背景知识 在开始分析两个方法的区别前,先了解几个概念。 1.1 Hibernate中的Session 在Hibernate框架中,Session是与数据库交互的重要对象,它提供了对数据库的增删改查等操作。 1.2 对象…

    Java 2023年5月20日
    00
  • HashMap和HashTable底层原理以及常见面试题

    HashMap和HashTable底层原理以及常见面试题 1. HashMap和HashTable的区别 HashMap和HashTable都是Java中的重要容器类,它们的目的是为了存放和访问键值对。虽然它们的功能是相似的,但是它们在底层的实现和使用上有很大的不同。 1.1 HashMap HashMap的底层是基于哈希表实现的,其键值对存储在Entry数…

    Java 2023年5月26日
    00
  • Spring Boot jpa Service层代码实例

    下面我将详细讲解“Spring Boot jpa Service层代码实例”的完整攻略。 什么是Spring Boot jpa Service层 Spring Boot是一个快速开发的框架,它可以轻松地构建基于Spring框架的Web应用程序。而JPA(Java Persistence API)是一种Java EE标准API,用于管理Java对象到关系数据库…

    Java 2023年5月20日
    00
  • Java如何连接数据库图文教程

    首先我来讲解一下“Java如何连接数据库”的完整攻略。 一、准备工作 1.1 下载并安装数据库 Java程序连接数据库需要先安装对应的数据库软件,这里以MySQL数据库为例。可以在官网 https://dev.mysql.com/downloads/mysql 下载MySQL Community Server安装包(根据系统位数选择),下载后按照提示安装即可…

    Java 2023年5月19日
    00
  • 基于Java实现修改图片分辨率示例代码

    下面就是详细的攻略: 1. 概述 本文将为大家介绍如何用Java代码实现修改图片分辨率的功能,主要文本内容包括:开发环境准备、示例代码说明、代码分析以及实例应用。 2. 开发环境准备 Java实现修改图片分辨率的功能,需要用到ImageIO和Awt工具包,所以需要在应用程序中引用这两个工具包。以下是开发所需的环境: JDK 1.8及以上版本 Eclipse开…

    Java 2023年5月19日
    00
  • php中session退出登陆问题

    下面是关于PHP中Session退出登录问题的完整攻略: 1. 什么是Session退出登录问题 在使用Session管理用户身份认证时,通常会使用Session存储用户登录状态信息,当用户点击“退出登录”按钮或删除浏览器Cookie时,需要销毁Session并将用户的登录状态重置为未登录。而PHP中的Session退出登录问题,指的是在进行Session销…

    Java 2023年6月16日
    00
  • JAVA String.valueOf()方法的用法说明

    JAVA String.valueOf()方法的用法说明 简介 String.valueOf()方法是Java中的一个静态方法,用于将参数转换成字符串类型,该方法有多个重载版本,可以将各种类型的数据转换成字符串类型。 方法签名 public static String valueOf(boolean b) public static String value…

    Java 2023年5月27日
    00
  • Java实现简单汽车租赁系统

    Java实现简单汽车租赁系统的完整攻略 系统需求分析 该汽车租赁系统应该具备以下功能: 显示当前的租赁车辆列表 租客可以查询所需汽车类型的库存量 租客可以租车,并计算租车天数、费用等信息 车辆归还,更新库存 系统设计 类的设计-属性和方法 Car(汽车类) 属性: carType:汽车类型 carId:汽车编号 carPrice:汽车租金(元/天) isRe…

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