亿琪软件-开源博客 - JPA
type: channel
link: https://www.yiqisoft.cn/blogs/category/JPA/
description: JPA
items: SpringBoot 使用 JPA 操作 PostgreSQL 数据库

SpringBoot 使用 JPA 操作 PostgreSQL 数据库
type: item
date: 2023-06-27T02:31:00+00:00
description: 目录 一、前言 JPA简介 PostgreSQL简介 二、开始 2.1 依赖导入 2.2 环境准备 2.2.1 创建实体类对象 2.2.2 创建 Repository 接口 2.2.3 SpringBoot 启动类 2.2.4 创建 Controller 类 关于 亿琪软件 一、前言 JPA简介 Java Persistence API (JPA) 是一种基于 ORM (Object-Relational Mapping) 技术的 Java EE 规范。它主要用于将 Java 对象映射到关系型数据库中，以便于对数据进行持久化操作。 JPA 主要由三个部分组成，分别是 Entity、EntityManager 和 Query。其中 Entity 用于描述 Java 对象和数据库表之间的映射关系；EntityManager 用于管理实体对象的生命周期和完成实体对象与数据库之间的操作；Query 用于查询数据。 PostgreSQL简介 PostgreSQL 是一个功能强大的开源对象关系型数据库系统，他使用和扩展了 SQL 语言，并结合了许多安全存储和扩展最复杂数据工作负载的功能。对比时下最流行的 MySQL 来说，PostGreSQL 拥有更灵活，更高度兼容标准的一些特性。 二、开始 2.1 依赖导入 org.springframework.boot spring-boot-starter-data-jpa org.postgresql postgresql runtime 2.2 环境准备 2.2.1 创建实体类对象 在项目中创建实体类，用于映射数据库表和列。 实体类需要使用 @Entity 注解进行标记，并且需要指定主键和自动生成策略，例如： @Entity @Table(name = "users") public class Users { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "username") private String username; @Column(name = "password") private String password; get/set方法... } 2.2.2 创建 Repository 接口 创建 Repository 接口，并继承 JpaRepository<> Repository 接口加上 @Repository 注解，由 Spring 容器扫描并进行管理 @Repository public interface UsersMapper extends JpaRepository<Users, Long> { } 2.2.3 SpringBoot 启动类 SpringBoot 主程序入口，若只是使用JPA框架，配置只需要添加 @EnableJpaRepositories 注解即可 @SpringBootApplication @EnableJpaRepositories public class JpaStart { public static void main(String[] args) { SpringApplication.run(JpaStart.class,args); } } 2.2.4 创建 Controller 类 对 PostgreSQL 数据库实现基本的增删改查功能 @RestController @RequestMapping("/users") public class UsersController { @Autowired private UsersMapper usersMapper; /** * 保存和修改 * @param users 传递的实体 * @return Ajaxresult转换结果 */ @PutMapping public AjaxResult addOrUpdate(@RequestBody Users users) { try { if (users.getId() != null && users.getId() > 0) { Users users1 = usersMapper.findById(users.getId()).get(); BeanUtils.copyProperties(users, users1); usersMapper.save(users1); } else { usersMapper.save(users); } return AjaxResult.me(); } catch (Exception e) { e.printStackTrace(); retu…