本模块仅仅演示None模式,多数据源功能。 适用于不同mapper包,调用不同的数据源的场景。通常用于定时任务、从不同数据源同步数据等场景下。
测试前,请将application.yml
的配置,导入(新建)nacos的 lamp-noneMultipleDataSources-server.yml 中.并确保mysql.yml中 lamp.database.multi-tenant-type=NONE。
重点看以下类和配置文件
- MasterDatabaseAutoConfiguration:第一个数据源的配置类
// 不同点1
basePackages = {"top.tangyh.lamp.noneMultipleDataSources.dao.master"}
/**
* 不同点2:每个数据源配置不同即可
*/
public static final String DATABASE_PREFIX = "master";
- MybatisPlusMasterProperties:第一个数据源的配置文件类
// 相对于MybatisPlusProperties,仅仅这里不一样,表示从配置文件中 mybatis-plus-master.xxx 读取配置
@ConfigurationProperties(prefix = "mybatis-plus-master")
- SlaveDatabaseAutoConfiguration:第二个数据源的配置类
// 不同点1
basePackages = {"top.tangyh.lamp.noneMultipleDataSources.dao.slave"}
/**
* 不同点2:每个数据源配置不同即可
*/
public static final String DATABASE_PREFIX = "slave";
- MybatisPlusSlaveProperties:第二个数据源的配置文件类
// 相对于MybatisPlusProperties,仅仅这里不一样,表示从配置文件中 mybatis-plus-slave.xxx 读取配置
@ConfigurationProperties(prefix = "mybatis-plus-slave")
- application.yml
spring:
datasource:
druid:
# 数据源1操作 lamp_base_0000库
master:
url: jdbc:mysql://${lamp.mysql.ip}:${lamp.mysql.port}/lamp_base_0000?serverTimezone=CTT&characterEncoding=utf8&useUnicode=true&useSSL=false&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&nullCatalogMeansCurrent=true
# 数据源2操作 lamp_extend_0000库
slave:
url: jdbc:mysql://${lamp.mysql.ip}:${lamp.mysql.port}/lamp_extend_0000?serverTimezone=CTT&characterEncoding=utf8&useUnicode=true&useSSL=false&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&nullCatalogMeansCurrent=true
# 数据源2的mybatis-plus配置,启动时,会注入到MybatisPlusSlaveProperties中
mybatis-plus-slave:
mapper-locations:
- classpath*:mapper_**/**/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: top.tangyh.lamp.*.entity;top.tangyh.basic.database.mybatis.typehandler
typeEnumsPackage: top.tangyh.lamp.*.enumeration
global-config:
db-config:
id-type: INPUT
insert-strategy: NOT_NULL
update-strategy: NOT_NULL
select-strategy: NOT_EMPTY
configuration:
#配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)
map-underscore-to-camel-case: true
cache-enabled: false
#配置JdbcTypeForNull, oracle数据库必须配置
jdbc-type-for-null: 'null'
# 数据源1的mybatis-plus配置,启动时,会注入到MybatisPlusMasterProperties中
mybatis-plus-master: # 仅仅这里不同
mapper-locations:
- classpath*:mapper_**/**/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: top.tangyh.lamp.*.entity;top.tangyh.basic.database.mybatis.typehandler
typeEnumsPackage: top.tangyh.lamp.*.enumeration
global-config:
db-config:
id-type: INPUT
insert-strategy: NOT_NULL
update-strategy: NOT_NULL
select-strategy: NOT_EMPTY
configuration:
#配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)
map-underscore-to-camel-case: true
cache-enabled: false
#配置JdbcTypeForNull, oracle数据库必须配置
jdbc-type-for-null: 'null'