📜  Spring Boot-数据库处理(1)

📅  最后修改于: 2023-12-03 14:47:33.233000             🧑  作者: Mango

Spring Boot 数据库处理

Spring Boot 是一个基于 Spring 框架的快速开发 WEB 应用程序的工具,它提供了很多开箱即用的插件和配置来简化开发过程。其中之一就是对数据库处理的支持。

在 Spring Boot 中,你可以使用 JPA(Java Persistence API)、Hibernate、MyBatis 等 ORM(Object-Relational Mapping)框架来访问数据库。本文将简单介绍如何在 Spring Boot 中使用这些框架来处理数据库。

配置数据库信息

首先,我们需要在 Spring Boot 的配置文件中配置数据库相关信息。一般来说,我们需要配置数据库的 URL、用户名、密码、驱动程序等信息。

以下是一个示例配置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

其中 spring.datasource.url 指明数据库的 URL,spring.datasource.usernamespring.datasource.password 指明用户名和密码,spring.datasource.driver-class-name 指明数据库驱动程序的类名。

使用 JPA 访问数据库

JPA 是 Java EE 规范中定义的 ORM 框架,它提供了一套 API 用于访问数据库。Spring Boot 集成了 JPA,并提供了许多便捷的配置和使用方式。

以下是一个示例 JPA 的实体类:

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;

    // Getters and Setters
}

其中 @Entity 注解表示这是一个 JPA 实体类,@Table 注解指明数据库中对应的表名,@Id 注解表示这是唯一标识,@GeneratedValue 注解表示标识自动生成。

以下是一个示例 JPA 的数据访问层:

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

其中 @Repository 注解表示这是一个 Spring Bean,JpaRepository 是 Spring Data JPA 提供的一种标准仓库接口,它提供了各种通用的数据访问方法。

以下是一个示例 JPA 的服务层:

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

    @Override
    public User save(User user) {
        return userRepository.save(user);
    }

    @Override
    public void deleteById(Long id) {
        userRepository.deleteById(id);
    }

    @Override
    public User findById(Long id) {
        return userRepository.findById(id).orElse(null);
    }

    @Override
    public List<User> findAll() {
        return userRepository.findAll();
    }
}

其中 @Service 注解表示这是一个 Spring Bean,@Autowired 注解表示自动注入 UserRepository,服务层中可以直接调用 UserRepository 的方法来访问数据库。

使用 Hibernate 访问数据库

Hibernate 是一个流行的 ORM 框架,它提供了一种在 Java 中映射对象到关系型数据库中的方法。Spring Boot 集成了 Hibernate,并提供了许多便捷的配置和使用方式。

以下是一个示例 Hibernate 的实体类:

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;

    // Getters and Setters
}

与 JPA 的实体类相同。

以下是一个示例 Hibernate 的数据访问层:

@Repository
public class UserRepositoryImpl implements UserRepository {
    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public User save(User user) {
        Session session = sessionFactory.getCurrentSession();
        session.saveOrUpdate(user);
        return user;
    }

    @Override
    public void deleteById(Long id) {
        Session session = sessionFactory.getCurrentSession();
        User user = findById(id);
        if (user != null) {
            session.delete(user);
        }
    }

    @Override
    public User findById(Long id) {
        Session session = sessionFactory.getCurrentSession();
        return session.get(User.class, id);
    }

    @Override
    public List<User> findAll() {
        Session session = sessionFactory.getCurrentSession();
        CriteriaQuery<User> query = session.getCriteriaBuilder().createQuery(User.class);
        query.from(User.class);
        return session.createQuery(query).getResultList();
    }
}

其中 @Repository 注解表示这是一个 Spring Bean,@Autowired 注解表示自动注入 SessionFactory(Hibernate 的会话工厂),数据访问层中可以直接调用 SessionFactory 的方法来访问数据库。

使用 MyBatis 访问数据库

MyBatis 是一种数据持久层框架,它可以对 JDBC 进行封装,提供更为方便的 SQL 查询方法。Spring Boot 集成了 MyBatis,并提供了许多便捷的配置和使用方式。

以下是一个示例 MyBatis 的数据访问层:

@Repository
public class UserRepositoryImpl implements UserRepository {
    @Autowired
    private SqlSession sqlSession;

    @Override
    public User save(User user) {
        sqlSession.insert("UserMapper.save", user);
        return user;
    }

    @Override
    public void deleteById(Long id) {
        sqlSession.delete("UserMapper.deleteById", id);
    }

    @Override
    public User findById(Long id) {
        return sqlSession.selectOne("UserMapper.findById", id);
    }

    @Override
    public List<User> findAll() {
        return sqlSession.selectList("UserMapper.findAll");
    }
}

其中 @Repository 注解表示这是一个 Spring Bean,@Autowired 注解表示自动注入 SqlSession,数据访问层中可以直接调用 SqlSession 的方法来访问数据库。

总结

在 Spring Boot 中,你可以使用 JPA、Hibernate、MyBatis 等 ORM 框架来访问数据库。以上是这些框架的基本使用方法,你可以根据实际需要进行更高级的配置和使用。Spring Boot 的自动配置和依赖管理使得使用这些框架变得非常简单和方便。