springboot集成H2数据库,实现多数据源切换功能

        在某个项目中,由于客户某些需求,被迫把原本的mysql数据库替换为H2内嵌式的数据库,并且还需要做多库的切换,经过几天的整理终于完成了该需求,在此记录一下,也算是对这几天的工作的一个小结。

        引入H2依赖包及Mybatisplus相关包

        H2是内嵌式数据库,可以免安装直接用(具体的说明可以去H2官网看看哈)

        因为Mybatisplus内置有@DS注解可以直接用于切换数据源,本着花最少的力气干活的态度,我就直接用这个了;dynamic-datasource-spring-boot-starter用来配置各个数据源

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
        <!--内嵌h2数据库-->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>2.1.214</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</grou
<think>好的,我现在需要帮助用户了解Spring Boot中常用的数据库及其集成方式,并提供配置示例。首先,我得回忆一下用户提供的引用内容,看看有哪些相关的信息可以利用。 根据引用[1],提到了Spring Boot整合JDBC、Druid、MyBatis和JPA。引用[4]和[3]详细说明了MyBatis的使用,而引用[5]则介绍了HikariCP连接池。引用[2]提到了使用JPA进行CRUD操作。因此,用户可能想知道这些数据库技术如何在Spring Boot集成,以及具体的配置步骤。 首先,我需要列出常用的数据库,比如MySQL、PostgreSQL、H2等,然后说明Spring Boot如何整合这些数据库。整合方式包括使用JDBC、JPA、MyBatis以及连接池如HikariCP和Druid。接下来,每个部分需要给出配置示例,比如在application.properties中的配置,以及代码示例。 需要注意的是,用户可能对配置的具体参数感兴趣,比如数据源的URL、用户名、密码,以及如何选择不同的连接池。同时,要区分不同ORM工具(如JPA和MyBatis)的配置差异。例如,JPA可能需要配置Hibernate属性,而MyBatis需要指定mapper locations。 另外,用户可能对如何选择适合自己项目的数据库和工具有疑问,因此需要简要说明每个技术的适用场景,比如HikariCP适合高性能需求,Druid提供监控功能,JPA适合快速开发,MyBatis更灵活等。 在组织内容时,应该分点列出各个数据库和整合方式,确保结构清晰。每个部分包含依赖添加、配置示例和代码片段。同时,要引用提供的参考资料,比如在提到HikariCP时引用[5],在MyBatis部分引用[3]和[4]。 最后,生成的相关问题需要基于用户可能感兴趣的扩展点,比如如何选择连接池、配置多数据源或事务管理,这些都在引用中有所提及或相关。</think>### Spring Boot 常用数据库整合及配置示例 Spring Boot 支持多种数据库集成,包括关系型数据库(如 MySQL、PostgreSQL)和嵌入式数据库(如 H2),并提供统一的配置方式。以下是常见数据库整合方法及配置示例: --- #### 一、常用数据库类型 1. **MySQL** 适用于生产环境,支持高并发事务处理。 2. **PostgreSQL** 开源关系型数据库,支持复杂查询和 JSON 数据类型。 3. **H2** 嵌入式数据库,适合开发和测试环境。 --- #### 二、数据库整合方式及示例 ##### 1. 整合 JDBC(基础数据源配置) **依赖添加**: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> ``` **配置示例(`application.properties`)**: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` ##### 2. 整合 HikariCP(高性能连接池)[^5] Spring Boot 默认使用 HikariCP,无需额外配置。若需调优: ```properties spring.datasource.hikari.connection-timeout=30000 spring.datasource.hikari.maximum-pool-size=20 ``` ##### 3. 整合 Druid(带监控功能的连接池) **依赖添加**: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency> ``` **配置示例**: ```properties spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.url=jdbc:mysql://localhost:3306/mydb spring.datasource.druid.username=root spring.datasource.druid.password=123456 # 开启监控 spring.datasource.druid.stat-view-servlet.enabled=true ``` ##### 4. 整合 MyBatis(持久层框架)[^4] **依赖添加**: ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` **配置示例**: ```properties # 指定 Mapper 文件位置 mybatis.mapper-locations=classpath:mapper/*.xml # 实体类包路径 mybatis.type-aliases-package=com.example.entity ``` **Mapper 接口示例**: ```java @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(Long id); } ``` ##### 5. 整合 JPA(ORM 框架)[^2] **依赖添加**: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` **配置示例**: ```properties spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect ``` **实体类与仓库接口**: ```java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; } public interface UserRepository extends JpaRepository<User, Long> { } ``` --- #### 三、不同数据库切换示例 1. **切换为 PostgreSQL**: ```properties spring.datasource.url=jdbc:postgresql://localhost:5432/mydb spring.datasource.driver-class-name=org.postgresql.Driver ``` 2. **切换为 H2(内存数据库)**: ```properties spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driver-class-name=org.h2.Driver spring.h2.console.enabled=true ``` --- ### 总结 - **关系型数据库**:通过 JDBC + 连接池(HikariCP/Druid)实现高效连接管理。 - **ORM 框架**:MyBatis 灵活性强,适合复杂 SQL;JPA 适合快速开发[^3][^4]。 - **嵌入式数据库**:H2 便于测试,无需外部依赖。 --- §§ 1. Spring Boot 中如何配置多数据源2. MyBatis 和 JPA 在性能上有哪些差异? 3. 如何通过 Spring Boot 实现数据库事务管理? 4. 如何选择适合项目的数据库连接池(HikariCP vs Druid)?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值