【SpringBoot3.x教程05】SpringBoot与关系型数据库的整合

本文介绍了SpringBoot中常用的三种ORM框架:JdbcTemplate、SpringDataJPA和MyBatis,分别阐述了它们的特点、使用场景和在CRUD操作中的应用,展示了如何在SpringBoot项目中集成和配置这些框架。
摘要由CSDN通过智能技术生成

前言:常用的ORM框架有哪些

JdbcTemplate

JdbcTemplate 是Spring框架提供的一个JDBC抽象库,旨在简化传统的JDBC操作,避免了繁琐的JDBC代码和数据库资源的手动处理。通过JdbcTemplate,开发者可以更加专注于业务逻辑而不是数据库的连接管理和资源释放。

核心特点

  • 简化数据库交互:自动处理连接的开启和关闭,减少了重复的数据库连接代码。
  • 异常处理:提供了一个统一的异常处理机制,将SQL异常转换为DataAccessException,方便异常管理。
  • 灵活的查询和更新操作:支持直接执行SQL查询和更新操作,以及调用存储过程。
  • 回调机制:通过RowMapperResultSetExtractor等回调接口,可以将数据库结果集映射到Java对象或集合。

使用场景:适用于需要直接使用SQL进行数据操作的场景,特别是在需要细粒度控制SQL执行和结果映射时。

Spring Data JPA

Spring Data JPA 是对JPA(Java Persistence API)的进一步封装和整合,目的是简化JPA的使用和提高开发效率。Spring Data JPA通过提供repository抽象层,使得数据库操作更加简单。

核心特点

  • 简化数据访问层(DAO)代码:通过扩展JpaRepository接口,自动实现了一系列标准的数据访问方法,如保存、删除、查询等。
  • 查询方法名解析:支持通过解析方法名自动生成查询,无需编写查询语句。
  • 查询注解:通过@Query注解,可以自定义JPQL(Java Persistence Query Language)或原生SQL查询。
  • 事务管理:整合了Spring的声明式事务管理。

使用场景:适用于JPA项目,特别是对于域驱动设计(DDD)和需要快速开发的应用程序。

MyBatis

MyBatis 是一个半ORM(对象关系映射)框架,提供了对象与数据库之间的映射,同时保留了编写原生SQL的能力。它避免了JDBC代码的繁琐和手动设置参数、获取结果集的过程,同时提供了更多的控制权和灵活性。

核心特点

  • 灵活的SQL编写:支持完全的SQL编写,使得开发者可以利用数据库的特性,如窗口函数、CTE(公用表表达式)等。
  • 动态SQL:支持动态SQL语句的构建,根据条件拼接不同的SQL片段。
  • 映射器(Mapper)XML文件:通过XML文件或注解定义SQL语句和映射规则。
  • 延迟加载:支持关联对象的延迟加载。

使用场景:适用于那些需要高度控制SQL语句,或数据库设计复杂、需要优化数据库查询性能的项目。

本文重点:学会三种方式的CRUD操作

第一步:引入pom依赖
<!-- MySQL 驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- Spring Boot Starter for Data JPA -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Spring Boot Starter for JdbcTemplate -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MyBatis Spring Boot Starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>
第二步:配置数据库属性
spring.datasource.url=jdbc:mysql://xxxx:3306/nextJava?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456

# JPA特有配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

# MyBatis特有配置
mybatis.mapper-locations=classpath:mappers/*.xml

第三步:代码实现
  1. 使用JdbcTemplate
@Repository
public class UserRepository {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    // 增
    public int save(User user) {
        return jdbcTemplate.update("INSERT INTO user(name, email) VALUES(?, ?)",
                                    user.getName(), user.getEmail());
    }

    // 删
    public int deleteById(Long id) {
        return jdbcTemplate.update("DELETE FROM user WHERE id = ?", id);
    }

    // 改
    public int update(User user) {
        return jdbcTemplate.update("UPDATE user SET name = ?, email = ? WHERE id = ?",
                                    user.getName(), user.getEmail(), user.getId());
    }

    // 查
    public User findById(Long id) {
        return jdbcTemplate.queryForObject("SELECT * FROM user WHERE id = ?",
                                           new Object[]{id},
                                           (rs, rowNum) ->
                                                   new User(
                                                           rs.getLong("id"),
                                                           rs.getString("name"),
                                                           rs.getString("email")
                                                   ));
    }
}

2、使用Spring Data JPA

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

    // Constructors, Getters and Setters
}

使用Spring Data JPA,只需要定义接口,继承JpaRepository即可自动拥有增删改查功能:

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

3、使用Mybatis

在src/main/resources/mappers目录下创建MyBatis的映射文件UserMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
    <insert id="save" parameterType="com.example.model.User">
        INSERT INTO user(name, email) VALUES(#{name}, #{email})
    </insert>
    <delete id="deleteById" parameterType="long">
        DELETE FROM user WHERE id = #{id}
    </delete>
    <update id="update" parameterType="com.example.model.User">
        UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}
    </update>
    <select id="findById" parameterType="long" resultType="com.example.model.User">
        SELECT * FROM user WHERE id = #{id}
    </select>
</mapper>

以及Mapper类

@Mapper
public interface UserMapper {
    void save(User user);
    void deleteById(Long id);
    void update(User user);
    User findById(Long id);
}

对应表创建语句为:

CREATE TABLE IF NOT EXISTS `User` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) NOT NULL,
  `email` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email_unique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

结束语

无论是使用JdbcTemplate来直接操作数据库,还是利用Spring Data JPA和MyBatis这样的ORM框架来简化数据持久层的开发,Spring Boot都以其"约定优于配置"的理念,让开发者能够集中精力于业务逻辑的实现,而不是纠结于繁琐的配置和底层实现细节。下一节我们来学习一下事务管理

  • 43
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot是一个用于创建独立的、基于Spring的应用程序的框架,它简化了Spring应用程序的开发过程。而达梦数据库是一种关系型数据库管理系统。下面是Spring Boot整合达梦数据库的步骤: 1. 添加依赖:在项目的pom.xml文件中添加达梦数据库的依赖,例如: ```xml <dependency> <groupId>com.dameng</groupId> <artifactId>dameng-jdbc</artifactId> <version>7.2.0</version> </dependency> ``` 2. 配置数据源:在application.properties或application.yml文件中配置达梦数据库的连接信息,例如: ```properties spring.datasource.url=jdbc:dm://localhost:5236/your_database spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=com.dameng.jdbc.DmDriver ``` 3. 创建数据源Bean:在Spring Boot的配置类中创建数据源Bean,例如: ```java @Configuration public class DataSourceConfig { @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.driver-class-name}") private String driverClassName; @Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); dataSource.setDriverClassName(driverClassName); return dataSource; } } ``` 4. 使用数据源:在需要使用数据库的地方注入数据源,并使用JdbcTemplate或其他ORM框架进行数据库操作,例如: ```java @RestController public class UserController { @Autowired private JdbcTemplate jdbcTemplate; @GetMapping("/users") public List<User> getUsers() { String sql = "SELECT * FROM user"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class)); } } ``` 以上就是Spring Boot整合达梦数据库的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

升仔聊编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值