目录
- 场景
- 多数据源存在问题
- demo演示流程
- 代码结构
- 引入jar包
- 配置application.properties
- 数据源初始化配置
- mybatis生成对应的entity、mapper、和xml文件
- 完成对应的service
- 测试多数据源事务问题
1. 场景:
经常会碰到这种应用场景,比如说下订单的操作,有需要修改订单库中信息,又需要修改产品库中库存,这一个操作就是需要一次性操作两个数据源的情况。
2. 多数据源存在问题
事务问题
3. demo演示流程
- 引入jar包
- 配置application.properties
- 数据源初始化配置
- mybatis生成对应的entity、mapper、和xml文件
- 完成对应的service
- 测试多数据源事务问题
4. 代码结构
5. 引入jar包(build.gradle)
spring boot版本使用2.0.6.RELEASE
implementation('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2')
runtimeOnly('mysql:mysql-connector-java')
testImplementation('org.springframework.boot:spring-boot-starter-test')
compile 'tk.mybatis:mapper-spring-boot-starter:1.1.5'
6. 配置application.properties
first.datasource.jdbc-url=jdbc:mysql://ip:3306/test1?useSSL=false&useUnicode=true&characterEncoding=utf-8
first.datasource.username=root
first.datasource.password=**
first.datasource.driver-class-name=com.mysql.jdbc.Driver
second.datasource.jdbc-url=jdbc:mysql://ip:3306/test2?useSSL=false&useUnicode=true&characterEncoding=utf-8
second.datasource.username=root
second.datasource.password=***
second.datasource.driver-class-name=com.mysql.jdbc.Driver
7. 数据源初始化配置
- application取消默认数据源的初始化
- 数据源初始化
- 不同数据源对应不同的mapper
7.1 application取消默认数据源的初始化
SpringBootApplication 注解中后面添加exclude = {DataSourceAutoConfiguration.class})
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class
})
public class TwodatasourceApplication {
public static void main(String[] args) {
SpringApplication.run(TwodatasourceApplication.class, args);
}
}
7.2 数据源初始化
import org.springframework.boot.context.properties.ConfigurationProperties;
imp