- pom.xml引入多数据源依赖
<!-- mybatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.2</version>
</dependency>
<!-- 多数据源 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>4.1.3</version>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!-- Oracle-->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.5.0.0</version>
</dependency>
<!-- orai18n 解决Oracle由于编码问题导致报错问题 -->
<dependency>
<groupId>com.oracle.database.nls</groupId>
<artifactId>orai18n</artifactId>
<version>23.2.0.0</version>
</dependency>
- application.yml配置数据源
spring:
datasource:
# 多数据源
dynamic:
#设置默认的数据源或者数据源组,默认值即为master
primary: master
#严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
strict: false
datasource:
master:
url: jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&userSSL=false
username: root
password: root
slave_1:
url: jdbc:mysql://localhost:3306/mybatis_1?characterEncoding=utf-8&userSSL=false
username: root
password: root
oracle:
url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=主机地址)(PORT=端口号)))(CONNECT_DATA=(SERVICE_NAME=服务名)))
username: 用户名
password: 用户密码
driver-class-name: oracle.jdbc.driver.OracleDriver
# 单数据源
# 数据源类型
# 数据库信息
# 驱动
# driver-class-name: com.mysql.cj.jdbc.Driver
# # 连接地址
# url: jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&userSSL=false
# username: root
# password: root
# mybatis-plus配置
mybatis-plus:
configuration:
# 开启日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 开启懒加载
lazy-loading-enabled: true
aggressive-lazy-loading: false
# 别名包路径
type-aliases-package: com.lz.mybatisplush.pojo
- 配置分页
package com.lz.mybatisplush.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.lz.mybatisplush.mapper")
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 分页插件
// interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 多数据源不写类型 否则数据库类型不一样导致分页SQL异常
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
// 乐观锁插件
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
}
在定义的Mapper或serviceImpl中指定数据源 @DS("slave/oracle数据源")