在上一篇文章
《基于 SpringBoot2.0+优雅整合 SpringBoot+Mybatis》
中,带着大家整合了 SpringBoot 和 Mybatis ,我们在当时使用的时单数据源的情况,这种情况下 Spring Boot的配置非常简单,只需要在 application.properties 文件中配置数据库的相关连接参数即可。但是往往随着业务量发展,我们通常会进行数据库拆分或是引入其他数据库,从而我们需要配置多个数据源。下面基于 SpringBoot+Mybatis ,带着大家看一下 SpringBoot 中如何配置多数据源。
这篇文章所涉及的代码其实是基于上一篇文章《优雅整合 SpringBoot+Mybatis ,可能是你见过最详细的一篇》的项目写的,但是为了考虑部分读者没有读过上一篇文章,所以我还是会一步一步带大家走完每一步,力争新手也能在看完之后独立实践。
目录:
一 开发前的准备1.1 环境参数1.2 创建工程1.3 创建两个数据库和 user 用户表、money工资详情表1.4 配置 pom 文件中的相关依赖1.5 配置 application.properties1.6 创建用户类 Bean和工资详情类 Bean二 数据源配置三 Dao 层开发和 Service 层开发3.1 Dao 层3.2 Service 层
四 Controller层五 启动类一 开发前的准备1.1 环境参数
开发工具:IDEA
基础工具:Maven+JDK8
所用技术:SpringBoot+Mybatis
数据库:MySQL
SpringBoot版本:2.1.0.SpringBoot2.0之后会有一些小坑,这篇文章会给你介绍到。注意版本不一致导致的一些小问题。
1.2 创建工程
创建一个基本的 SpringBoot 项目,我这里就不多说这方面问题了,具体可以参考下面这篇文章:
本项目结构:
基于SpirngBoot2.0+ 的 SpringBoot+Mybatis 多数据源配置项目结构
1.3 创建两个数据库和 user 用户表、money工资详情表
我们一共创建的两个数据库,然后分别在这两个数据库中创建了 user 用户表、money工资详情表。
我们的用户表很简单,只有 4 个字段:用户 id、姓名、年龄、余额。如下图所示:
用户表信息
上篇文章也提到了,我这里添加了“余额money”字段是为了给大家简单的演示一下事务管理的方式。
我们的工资详情表也很简单,也只有 4 个字段: id、基本工资、奖金和惩罚金。如下图所示:
工资详情表信息
建表语句:
用户表:
工资详情表:
1.4 配置 pom 文件中的相关依赖
由于要整合 springboot 和 mybatis 所以加入了artifactId 为 mybatis-spring-boot-starter 的依赖,由于使用了Mysql 数据库 所以加入了artifactId 为 mysql-connector-java 的依赖。
1.5 配置 application.properties
配置两个数据源:数据库1和数据库2!
注意事项:
另外在在2.0.2+版本后需要在datasource后面加上hikari,如果你没有加的话,同样可能会报错。
1.6 创建用户类 Bean和工资详情类 Bean
User.java
Money.java
二 数据源配置
通过 Java 类来实现对两个数据源的配置,这一部分是最关键的部分了。
DataSource1Config.java
DataSource2Config.java
关于上面的配置类这里主要提一下下面这几点:
注解中我们声明了使用数据库1的dao类所在的位置,还声明了 SqlSessionTemplate 。SqlSessionTemplate是MyBatis-Spring的核心。这个类负责管理MyBatis的SqlSession,调用MyBatis的SQL方法,翻译异常。SqlSessionTemplate是线程安全的,可以被多个DAO所共享使用。
由于我使用的是全注解的方式开发,所以下面这条找并且解析 mapper.xml 配置语句被我注释掉了
比如我们要声明使用数据1,直接在 dao 层的类上加上这样一个注释即可:
我们在数据库1配置类的每个方法前加上了 注解来声明这个数据库时默认数据库,不然可能会报错。
三 Dao 层开发和 Service 层开发
新建两个不同的包存放两个不同数据库的 dao 和 service。
3.1 Dao 层
对于两个数据库,我们只是简单的测试一个查询这个操作。在上一篇文章《基于 SpringBoot2.0+优雅整合 SpringBoot+Mybatis》中,我带着大家使用注解实现了数据库基本的增删改查操作。
UserDao.java
MoneyDao.java
3.2 Service 层
Service 层很简单,没有复杂的业务逻辑。
UserService.java
MoneyService.java
四 Controller层
Controller 层也非常简单。
UserController.java
MoneyController.java
五 启动类
这样基于SpirngBoot2.0+ 的 SpringBoot+Mybatis 多数据源配置就已经完成了, 两个数据库都可以被访问了。
笔主正在更新 SpringBoot 和其他常用技术的整合,可能是你遇到的讲解最详细的学习案例,力争新手也能看懂并且能够在看完之后独立实践。基于最新的 SpringBoot2.0+,是你学习SpringBoot 的最佳指南。目前已经更新下面几篇文章:
这些文章和相关源代码也同步更新在了我的 Github 上,地址如下(复制到浏览器访问),欢迎 Star!
https://github.com/Snailclimb/springboot-integration-examples
领取专属 10元无门槛券
私享最新 技术干货