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技术站