SpringBoot 集成 Spring Data JPA 让增

2023-08-17  本文已影响0人  小虎哥的技术博客

1. 什么是 Spring Data JPA

Spring Data JPA 是 Spring 对 JPA 规范的封装,简化了 JPA 的使用,提供了更加方便的数据访问层 API。相对于常规的 JPA 代码,Spring Data JPA 代码更简洁、更易于维护。

JPA全称Java Persistence API(Java持久化接口)。

2. SpringBoot 集成 Spring Data JPA 的步骤

下面介绍使用 SpringBoot 集成 Spring Data JPA 的步骤。

2.1 引入依赖

在 SpringBoot 中,可以通过在 pom.xml 文件中引入 Spring Data JPA 的依赖来使用。在 pom.xml 文件中添加以下配置:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>1.0.0</version>
    <name>demo</name>
    <description>demo</description>

    <dependencies>
        <!-- SpringBoot 和 Spring Data JPA 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
 
        <!-- MySQL 数据库依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
 
        <!-- SpringBoot Web 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

2.2 配置数据源

在使用 Spring Data JPA 之前,需要先配置好数据库和数据源。可以在 application.properties 中配置数据源,例如:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_name
spring.datasource.username=root
spring.datasource.password=password

2.3 创建实体类

在使用 Spring Data JPA 进行数据操作时,需要先定义实体类。实体类中需要使用注解 @Entity 标记该类为实体类,并使用 @Id@GeneratedValue 标记主键。例如:

@Entity
public class User {
    @Id
    @GeneratedValue
    private Long id;
    private String name;
    private Integer age;
    // 省略 getter 和 setter 方法
}

2.4 创建 DAO 接口

在 Spring Data JPA 中,不需要自己编写 DAO 层的实现类,只需要定义DAO接口并继承 JpaRepository 或者 PagingAndSortingRepository 接口就可以了。例如:

public interface UserRepository extends JpaRepository<User, Long> {
}

JpaRepository 接口中提供了许多基本的数据操作方法,例如 save、delete、findAll 等操作。而 PagingAndSortingRepository 接口除了继承了 JpaRepository 接口的方法外,还提供了排序和分页查询的方法。

2.5 业务逻辑层

在业务逻辑层中注入 DAO 接口,调用 DAO 方法进行数据操作。例如:

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;

    // 查询用户列表
    @Override
    public List<User> listUsers() {
        return userRepository.findAll();
    }

    // 新增用户
    @Override
    public void saveUser(User user) {
        userRepository.save(user);
    }

    // 修改用户
    @Override
    public void updateUser(User user) {
        userRepository.save(user);
    }

    // 删除用户
    @Override
    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }

    // 根据ID查询用户
    @Override
    public User getUserById(Long id) {
        return userRepository.getOne(id);
    }
}

2.6 Controller 层

在 Controller 层使用业务逻辑层提供的方法进行数据操作,例如:

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    // 查询用户列表
    @GetMapping("/users")
    public List<User> listUsers() {
        return userService.listUsers();
    }

    // 新增用户
    @PostMapping("/users")
    public void saveUser(@RequestBody User user) {
        userService.saveUser(user);
    }

    // 修改用户
    @PutMapping("/users")
    public void updateUser(@RequestBody User user) {
        userService.updateUser(user);
    }

    // 删除用户
    @DeleteMapping("/users/{id}")
    public void deleteUser(@PathVariable("id") Long id) {
        userService.deleteUser(id);
    }

    // 根据ID查询用户
    @GetMapping("/users/{id}")
    public User getUserById(@PathVariable("id") Long id) {
        return userService.getUserById(id);
    }
}

可以看到,在 Controller 层中调用了业务逻辑层提供的方法进行数据操作。

到此,就完成了 SpringBoot 集成 Spring Data JPA 的操作。

3. 总结

Spring Data JPA 简化了 JPA 的使用,提供了更方便的数据访问层 API,使得数据操作更加简洁、易于维护。通过本教程,我们介绍了 SpringBoot 集成 Spring Data JPA 的步骤,包括依赖引入、数据源配置、实体类定义、DAO 接口定义、业务逻辑层和 Controller 层的编写。

上一篇 下一篇

猜你喜欢

热点阅读