多数据源简单配置(dynamic-datasource组件+MyBatis)-快速上手系列
Posted Fire king
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多数据源简单配置(dynamic-datasource组件+MyBatis)-快速上手系列相关的知识,希望对你有一定的参考价值。
多数据源简单配置:dynamic-datasource组件+MyBatis实现
1.需要引入的依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
2.配置文件多数据源配置
spring:
datasource:
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master
strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
datasource:
master:
url: jdbc:mysql://localhost:3306/MasterDB?serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
slave_1:
url: jdbc:mysql://localhost:3306/SlaveDB1?serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
# mybatis配置
mybatis:
# 搜索指定包别名
typeAliasesPackage: test.module
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath:mappers/*.xml
3.实现类(核心)
@DS(“xxx”)的名字要与配置文件配置的数据源名称相同,即spring.datasource.dynamic.datasource
下的数据源名称。
@Service
@Transactional
public class UserServiceImpl implements UserService
@Autowired
private UserMapper userMapper;
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
@DS("master")
public List selectAllWithMaster()
return userMapper.selectAllWithMaster();
@Override
@DS("slave_1")
public List selectAllWithSlave()
return userMapper.selectAllWithSlave();
4.mapper映射文件
<?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="test.mapper.UserMapper">
<select id="selectAllWithMaster" resultType="test.module.User">
select * from t_user
</select>
<select id="selectAllWithSlave" resultType="test.module.User">
select * from t_user
</select>
</mapper>
5.controller
@RestController
public class ThirdPartyFrameworksController
@Autowired
private UserService userServic;
@RequestMapping("/selectAllUser")
public List<User> selectAllUser()
return userServic.selectAllWithSlave();
//return userServic.selectAllWithMaster();
6.访问效果图
以上是关于多数据源简单配置(dynamic-datasource组件+MyBatis)-快速上手系列的主要内容,如果未能解决你的问题,请参考以下文章