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

在 Spring Boot 中使用 JPA(Java Persistence API)进行数据库操作

步骤 1: 添加依赖

pom.xml 文件中添加相关依赖:

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

    <!-- Spring Boot Starter Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MySQL JDBC Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <!-- Spring Boot Starter Thymeleaf (Optional, 如果需要页面渲染的话) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

步骤 2: 配置数据库连接

application.propertiesapplication.yml 中配置数据库连接信息,并指定 JPA 自动生成数据库表的策略。

# MySQL 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# JPA 配置,自动根据实体类生成数据库表
spring.jpa.hibernate.ddl-auto=update  # 自动更新表结构,开发中可以使用,生产中不推荐使用

# JPA 配置,指定数据库方言
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

# 显示SQL
spring.jpa.show-sql=true

# 自动格式化SQL
spring.jpa.properties.hibernate.format_sql=true
3. 创建实体类

创建一个简单的 JPA 实体类,这个类会映射到数据库中的表。如果数据库中不存在这个表,JPA 会根据实体类自动创建

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)  // 自动生成主键
    private Long id;
    
    private String name;
    
    private String email;

    // Getters 和 Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
4. 创建 Repository 接口

创建一个继承 JpaRepository 的接口,JPA 会自动提供基本的 CRUD 操作。

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    // 可以添加自定义查询方法
}
5. 创建服务层

创建一个服务层来操作数据。

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 User saveUser(User user) {
        return userRepository.save(user);
    }

    // 获取所有用户
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
}
6. 创建 Controller 层

创建一个简单的 Controller 来处理 HTTP 请求。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    // 获取所有用户
    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    // 创建用户
    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.saveUser(user);
    }
}
7. 数据库表结构变化

每当你对 User 实体类进行修改(例如增加字段),ddl-auto=update 配置会自动调整数据库表结构。例如,如果你在 User 类中添加一个字段:

private String phoneNumber;


http://www.kler.cn/a/428539.html

相关文章:

  • 数据库索引(1)
  • web前端1--基础
  • HTML语言的计算机基础
  • 第12章:Python TDD完善货币加法运算(一)
  • 走进DevOps:让开发与运维齐头并进
  • ElasticSearch DSL查询之高亮显示
  • Telnet不安全?如何配置使用更安全的STelnet远程登录华为AR1000V路由器?
  • docker修改并迁移存储至数据盘
  • C语言求斐波那契数(不考虑溢出)(递归+迭代)
  • mobi文件转成pdf
  • App自动化测试用例的录制与编写
  • 服务器被ping的风险,如何开启和禁止ping?
  • 国内有什么AI软件可供使用
  • k8s 之 StatefulSet
  • 力扣100题--移动零
  • C++打造局域网聊天室第四课: 动态启用或禁用窗口及MFC消息映射机制
  • QT 中 QString 转换为 Unicode 和 ASCII 的方法
  • 【JavaEE 初阶】⽹络编程套接字
  • 【Linux】Git
  • 运输层4——TCP格式(重点!)
  • 24/12/8 算法笔记<强化学习> AC:actor-critic
  • 安装部署PowerDNS--实现内网DNS解析
  • AI视频玩法:动物融合技术解析
  • 智驾端到端时代,何以「奔驰」?
  • 图神经网络代码学习—基本使用与分类任务
  • JWT 原理与使用