跳到主要内容

分库数据源配置

如果想要分库配置(积木报表走单独的数据库),那么请参考下面的配置

多数据源集成方案一

1、application.yml中自定义数据源,如:

jeecg:
minidao-datasource:
jdbc-url: jdbc:mysql://127.0.0.1:3306/jimureport?autoReconnect=true&failOverReadOnly=false&maxReconnects=1000&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver

2、自定义数据源配置类,如:

/**
* @description: 数据源配置类
*/
@Configuration
public class DataSourceConfig{

/**
* 1、bean的名称必须为minidaoDataSource,否则不生效
* 2、jeecg.minidao-datasource对应的是yml中的jeecg下的minidao-datasource,可自定义
*/
@Bean(name="minidaoDataSource")
@ConfigurationProperties(prefix = "jeecg.minidao-datasource")
public DataSource dataSource(){
return DataSourceBuilder.create().build();
}

}

多数据源集成方案二

1、application.yml中自定义数据源,如:

jeecg:
minidao-datasource:
jdbc-url: jdbc:mysql://127.0.0.1:3306/jimureport?autoReconnect=true&failOverReadOnly=false&maxReconnects=1000&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver

2、自定义数据源配置类,如:

/**
* 1、bean的名称必须为minidaoDataSource,否则不生效
* 2、jeecg.minidao-datasource对应的是yml中的jeecg下的minidao-datasource,可自定义
*/
@Bean(name="minidaoDataSource")
@ConfigurationProperties(prefix = "jeecg.minidao-datasource")
public DataSource minidaoDataSource(){
return DataSourceBuilder.create().build();
}

/**
* 配置主数据源
*
* @return
*/
@Bean(name = "master")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.master")
public DataSource master() {
return DruidDataSourceBuilder.create().build();
}

/**
* 配置多数据源
*
* @return
*/
@Bean(name = "dynamicDataSource")
public DataSource dynamicDataSource() {
DynamicRoutingDataSource dynamicRoutingDataSource = new DynamicRoutingDataSource();
dynamicRoutingDataSource.setPrimary("master");
dynamicRoutingDataSource.addDataSource("master",master());
//多个数据源...
//dynamicRoutingDataSource.addDataSource("master",master());
return dynamicRoutingDataSource;
}

@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
//MybatisPlus使用的是MybatisSqlSessionFactory
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dynamicDataSource());
//此处设置为了解决找不到mapper文件的问题
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:org/jeecg/modules/**/xml/*Mapper.xml"));
return sqlSessionFactoryBean.getObject();
}

@Bean
public SqlSessionTemplate sqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(sqlSessionFactory());
}

/**
* 多数据源事务
*
* @return
*/
@Bean
public PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dynamicDataSource());
}

/**
* 集成flowable(没有可以不用集成)
* @return
*/
@Bean
public SpringProcessEngineConfiguration springProcessEngineConfiguration(){
SpringProcessEngineConfiguration springProcessEngineConfiguration
= new SpringProcessEngineConfiguration();
springProcessEngineConfiguration.setDataSource(dynamicDataSource());
springProcessEngineConfiguration.setDatabaseSchemaUpdate("false");
springProcessEngineConfiguration.setTransactionManager(transactionManager());
return springProcessEngineConfiguration;
}