使用mybatis-plus多数据源处理数据,大致分为以下步骤:
1.引入依赖
2.配置application.yml
3.配置数据源
1.引入依赖
参考mybatis-plus官方文档,使用多数据源需要引入依赖,具体看项目的spring-boot版本:
<!-- spring-boot 1.5.x 2.x.x -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${version}</version>
</dependency>
<!-- spring-boot3及以上 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
<version>${version}</version>
</dependency>
记得引入驱动依赖和mybatis-plus的依赖
2.配置application.yml
原来的application.yml一般这样配置数据源:
oracle:
spring:
datasource:
url: jdbc:oracle:thin:@localhost:1521:datasource_name
username: oracle_name
password: oracle_passwd
driver-class-name: oracle.jdbc.driver.OracleDriver
mysql:
spring:
datasource:
url: jdbc:mysql://localhost:3306/
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
引入依赖后,使用多数据源的application.yml:
spring:
datasource:
dynamic:
strict: false
primary: oracle
datasource:
oracle:
url: jdbc:oracle:thin:@localhost:1521:datasource_name
username: oracle_name
password: oracle_passwd
driver-class-name: oracle.jdbc.driver.OracleDriver
mysql:
url: jdbc:mysql://localhost:3306/datasource_name
username: mysql_name
password: mysql_password
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
mapper-locations: mapper/*.xml
配置多数据源后不同数据源放在了dynamic:下面的datasource下,冒号后面没换行要加空格,strict表示是否开启严格模式,不写默认为false,pimary为默认数据库,不写默认为master,mybatis-plus的配置可以根据自己的来,我这儿写了mapper的位置,在resource的mapper文件夹下。
3.使用数据源
编写mapper类,使用@DS注解修改数据源
import com.baomidou.dynamic.datasource.annotation.DS;
import java.util.Map;
@DS("mysql")
public interface StudentMapper {
Map<String,Object> getStudentInfo();
}
import com.baomidou.dynamic.datasource.annotation.DS;
import java.util.Map;
@DS("oracle")
public interface CarMapper {
Map<String,Object> getCarInfo();
}
注意这里是interface,不需要写实现类
mapper.xml文件
StudentMapper
<?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.test.mapper.StudentMapper">
<select id="getStudentInfo" resultType="java.util.Map">
<!-- MySql 语句 -->
select id,name from ......
</select>
</mapper>
CarMapper
<?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.test.mapper.CarMapper">
<select id="getCarInfo" resultType="java.util.Map">
<!-- Oracle 语句 -->
select id,name from ......
</select>
</mapper>
使用数据源:
@RestController
public class Controller {
@Autowired
StudentMapper studentMapper;
@Autowired
CarMapper carMapper;
@GetMapping(value = "/getStudentInfo")
public getStudentInfo(){
return studentMapper.getStudentInfo();
}
@GetMapping(value = "/getCarInfo")
public getCarInfo(){
return carMapper.getCarInfo();
}
}
文件位置大概是下面这样的,因为没建项目,所以大概写一下:
java.com.test
controller
Controller
mapper
CarMapper
StudentMapper
resources
mapper
CarMapper.xml
StudentMapper.xml
application.yml