类 BaseMasterDatabaseConfiguration

java.lang.Object
top.tangyh.basic.database.datasource.BaseDatabaseConfiguration
top.tangyh.basic.database.datasource.defaults.BaseMasterDatabaseConfiguration
所有已实现的接口:
org.springframework.beans.factory.InitializingBean

public abstract class BaseMasterDatabaseConfiguration extends BaseDatabaseConfiguration
数据库& 事务& MyBatis & Mp 配置 lamp.database.multiTenantType != DATASOURCE时, 子类需要继承它,并让程序启动时加载

注意:BaseDatabaseConfiguration 和 DynamicDataSourceAutoConfiguration 只能同时加载一个

不使用多数据源模式时,一个服务如何配置多数据源?

1. 本类的子类的 @MapperScan(basePackages = {"top.tangyh.basic"}) 修改为 @MapperScan(basePackages = {"top.tangyh.basic.product.dao"}) 2. 修改本类的子类的 @ConfigurationProperties(prefix = "spring.datasource.druid") 为 @ConfigurationProperties(prefix = "spring.datasource.druid.master") 3. 在lamp-xxx-server层复制该类,重命名为 SlaveDatabaseAutoConfiguration (跟AuthorityDatabaseAutoConfiguration放一起) 4. 修改 DATABASE_PREFIX 为 slave (任意命名,不要跟当前的重复即可) 5. 修改 @ConfigurationProperties(prefix = "spring.datasource.druid") 为 @ConfigurationProperties(prefix = "spring.datasource.druid.slave") 6. SlaveDatabaseAutoConfiguration 中的 basePackages = {"top.tangyh.basic"}, 修改为 basePackages = {"top.tangyh.basic.order.dao"} # 这个路径根据你的情况修改 7. mysql.yml 中增加2个数据源的配置 spring.database.druid.master 和 spring.database.druid.slave 8. mysql.yml 中将 mybatis-plus: 相关的所有配置完整的复制一份为: mybatis-plus-slave: , 并修改各自的子项 mapper-locations: 进行修改 8. 复制 MybatisPlusProperties 为 MybatisPlusSlaveProperties, 并修改类上的配置为 @ConfigurationProperties(prefix = "mybatis-plus-slave") 9. SlaveDatabaseAutoConfiguration 类上面需要配置 AuthorityDatabaseAutoConfiguration 类上的一系列注解 10. SlaveDatabaseAutoConfiguration 类上面需要配置 @EnableConfigurationProperties({MybatisPlusSlaveProperties.class}) , 构造器第一个参数也改成 MybatisPlusSlaveProperties

完成上述修改后, 位于top.tangyh.basic.product.dao 包下的dao 将操作 master 库, top.tangyh.basic.order.dao中的dao 将操作slave库

作者:
zuihou
  • 字段详细资料

    • DATABASE_PREFIX

      public static final String DATABASE_PREFIX
      每个数据源配置不同即可
      另请参阅:
  • 构造器详细资料

    • BaseMasterDatabaseConfiguration

      public BaseMasterDatabaseConfiguration(com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties properties, DatabaseProperties databaseProperties, org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.plugin.Interceptor[]> interceptorsProvider, org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.type.TypeHandler[]> typeHandlersProvider, org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.scripting.LanguageDriver[]> languageDriversProvider, org.springframework.core.io.ResourceLoader resourceLoader, org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.mapping.DatabaseIdProvider> databaseIdProvider, org.springframework.beans.factory.ObjectProvider<List<com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer>> configurationCustomizersProvider, org.springframework.beans.factory.ObjectProvider<List<com.baomidou.mybatisplus.autoconfigure.MybatisPlusPropertiesCustomizer>> mybatisPlusPropertiesCustomizerProvider, org.springframework.context.ApplicationContext applicationContext)
  • 方法详细资料

    • getSqlSessionTemplate

      @Bean("masterSqlSessionTemplate") public org.mybatis.spring.SqlSessionTemplate getSqlSessionTemplate(@Qualifier("masterSqlSessionFactory") org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory)
    • druidDataSource

      @Bean(name="masterDruidDataSource", initMethod="init") public DataSource druidDataSource()
      数据源信息
      返回:
      javax.sql.DataSource Druid数据源
    • dataSource

      @Primary @Bean(name="masterDataSource") public DataSource dataSource(@Qualifier("masterDruidDataSource") DataSource dataSource)
    • getSqlSessionFactory

      @Bean("masterSqlSessionFactory") @Primary public org.apache.ibatis.session.SqlSessionFactory getSqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception
      mybatis Sql Session 工厂
      返回:
      sql链接工厂
      抛出:
      Exception - 异常
    • dsTransactionManager

      @Bean(name="masterTransactionManager") @Primary public org.springframework.jdbc.datasource.DataSourceTransactionManager dsTransactionManager(@Qualifier("masterDataSource") DataSource dataSource)
      数据源事务管理器
      返回:
      数据源事务管理器