网站被k 原因网站建设设计培训班

当前位置: 首页 > news >正文

网站被k 原因,网站建设设计培训班,企业网站样式,淘宝网网页版官网目录 前言 一、JPA 核心概念与实体映射

  1. 什么是 JPA#xff1f;
  2. JPA 的主要组件
  3. 实体映射
  4. 常见的字段映射策略 二、Repository 接口与自定义查询
  5. 什么是 Repository 接口#xff1f;
  6. 动态查询方法
  7. 自定义查询
  8. 分页与排序 三、实战案例
  9. JPA 的主要组件
  10. 实体映射
  11. 常见的字段映射策略 二、Repository 接口与自定义查询
  12. 什么是 Repository 接口
  13. 动态查询方法
  14. 自定义查询
  15. 分页与排序 三、实战案例完整数据持久化示例
  16. 创建一个简单的用户管理系统
  17. 测试接口 前言 在现代企业级应用开发中数据持久化是不可或缺的一部分。Spring Boot 提供了对 JPAJava Persistence API的强大支持使得数据库操作变得更加简单和高效。本文将从以下几个方面详细讲解如何在 Spring Boot 中整合 JPA 实现数据持久化 JPA 核心概念与实体映射Repository 接口与自定义查询 通过本文的学习你将能够掌握 Spring Boot 中 JPA 的基本使用方法并能够根据实际需求进行灵活的扩展。 一、JPA 核心概念与实体映射
  18. 什么是 JPA JPAJava Persistence API是 Java EE 平台中用于对象关系映射ORM的标准 API。它允许开发者通过 Java 类来表示数据库中的表并通过 JPA 提供的接口和注解来执行 CRUD增删改查操作。
  19. JPA 的主要组件 EntityManager负责管理实体对象的生命周期并提供 CRUD 操作的方法。Persistence Unit一组相关的实体类和配置信息的集合。Entity表示数据库表的 Java 类。
  20. 实体映射 在 JPA 中实体类通过注解来映射到数据库表。以下是常用的注解 Entity标识这是一个实体类。Table指定实体类对应的数据库表名。Id标识实体类的主键字段。GeneratedValue指定主键的生成策略。Column指定字段对应的数据库列名、长度等属性。 示例代码 import jakarta.persistence.*; Entity Table(name users) public class User {Id GeneratedValue(strategy GenerationType.IDENTITY)private Long id;Column(name username, length 50, nullable false)private String username;Column(name email, unique true)private String email;// Getter and Setter methods }
  21. 常见的字段映射策略 基本类型映射如 String、Integer、Long 等。关联关系映射 一对一OneToOne通过 OneToOne 注解实现。一对多OneToMany通过 OneToMany 注解实现。多对一ManyToOne通过 ManyToOne 注解实现。多对多ManyToMany通过 ManyToMany 注解实现。
    示例代码一对多关系 import jakarta.persistence.*; Entity Table(name posts) public class Post {Id GeneratedValue(strategy GenerationType.IDENTITY)private Long id;Column(name title, nullable false)private String title;Column(name content)private String content;ManyToOne JoinColumn(name user_id)private User user;// Getter and Setter methods } 二、Repository 接口与自定义查询
  22. 什么是 Repository 接口 Spring Data JPA 提供了一个 Repository 接口用于简化数据访问层的开发。通过继承 JpaRepository 或 CrudRepository我们可以快速获得 CRUD 操作的能力。 示例代码 import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; Repository public interface UserRepository extends JpaRepositoryUser, Long { } JpaRepository继承了 CrudRepository 和 PagingAndSortingRepository提供了基本的 CRUD 操作和分页支持。UserRepository定义了一个针对 User 实体的仓库接口。
  23. 动态查询方法 Spring Data JPA 支持通过方法名动态生成查询语句。例如 public interface UserRepository extends JpaRepositoryUser, Long {ListUser findByUsername(String username);ListUser findByEmailContaining(String keyword);ListUser findByUsernameAndEmail(String username, String email); } findByUsername根据用户名查询用户。findByEmailContaining根据邮箱包含关键字查询用户。findByUsernameAndEmail根据用户名和邮箱联合查询用户。
  24. 自定义查询 对于复杂的查询需求可以通过 Query 注解来自定义 JPQLJava Persistence Query Language或原生 SQL 查询。 示例代码 import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; Repository public interface UserRepository extends JpaRepositoryUser, Long {Query(SELECT u FROM User u WHERE u.username LIKE %:keyword%)ListUser findByUsernameLike(Param(keyword) String keyword);Query(value SELECT * FROM users WHERE email LIKE %?1%, nativeQuery true)ListUser findByEmailLike(String keyword); } findByUsernameLike使用 JPQL 查询用户名包含关键字的用户。findByEmailLike使用原生 SQL 查询邮箱包含关键字的用户。
  25. 分页与排序 Spring Data JPA 提供了 Pageable 接口来支持分页和排序。 示例代码 import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; public interface UserRepository extends JpaRepositoryUser, Long {PageUser findAll(Pageable pageable);PageUser findByUsernameContaining(String keyword, Pageable pageable); } 三、实战案例完整数据持久化示例
  26. 创建一个简单的用户管理系统 实体类User.java
    import jakarta.persistence.; Entity Table(name users) public class User {Id GeneratedValue(strategy GenerationType.IDENTITY)private Long id;Column(name username, length 50, nullable false)private String username;Column(name email, unique true)private String email;// Getter and Setter methods } Repository 接口UserRepository.java
    import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; Repository public interface UserRepository extends JpaRepositoryUser, Long {ListUser findByUsername(String username);Query(SELECT u FROM User u WHERE u.email LIKE %:keyword%)ListUser findByEmailLike(Param(keyword) String keyword); } Service 层UserService.java
    import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; Service public class UserService {Autowired private UserRepository userRepository;public ListUser findAllUsers() {return userRepository.findAll(); }public User saveUser(User user) {return userRepository.save(user); }public ListUser findByUsername(String username) {return userRepository.findByUsername(username); }public ListUser findByEmailLike(String keyword) {return userRepository.findByEmailLike(keyword); } } Controller 层UserController.java
    import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.
    ; import java.util.List; RestController RequestMapping(/api/users) public class UserController {Autowired private UserService userService;GetMapping public ListUser getAllUsers() {return userService.findAllUsers(); }PostMapping public User createUser(RequestBody User user) {return userService.saveUser(user); }GetMapping(/username/{username})public ListUser findByUsername(PathVariable String username) {return userService.findByUsername(username); }GetMapping(/email/{keyword})public ListUser findByEmailLike(PathVariable String keyword) {return userService.findByEmailLike(keyword); } } 2. 测试接口 启动应用后可以通过 Postman 或 Swagger UI 测试以下接口 GET http://localhost:8080/api/users获取所有用户。POST http://localhost:8080/api/users创建新用户。GET http://localhost:8080/api/users/username/{username}根据用户名查询用户。GET http://localhost:8080/api/users/email/{keyword}根据邮箱关键字查询用户。