yml文件
spring:
jackson:
dateFormat: yyyy-MM-dd HH:mm:ss
serialization:
indent_output: true
time-zone: GMT+8
datasource:
external:
enable: false
mybatis:
business:
# 开发环境
url: jdbc:dm://*******:5236/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&schema=bj_supervision&failOverReadOnly=true&useSSL=false&serverTimezone=UTC
username: ******
password: '*******'
driver-class-name: dm.jdbc.driver.DmDriver
external:
#一包数据库(同步自由裁量权)
url: jdbc:dm://localhost:5236test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&schema=BUSINESS&failOverReadOnly=true&useSSL=false&serverTimezone=UTC
username: ******
password: '*****'
driver-class-name: dm.jdbc.driver.DmDriver
type: com.alibaba.druid.pool.DruidDataSource
配置文件(文件位置对应上)
package com.btismart.trafficdiscretion.config;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DataSourceMybatisConfig {
/**
* 业务数据源配置
*
* @return
*/
@Bean(name = "businessDataSourceProperties")
@Qualifier("businessDataSourceProperties")
@ConfigurationProperties(prefix = "spring.datasource.mybatis.business")
public DataSourceProperties businessDataSourceProperties() {
return new DataSourceProperties();
}
/**
* 外部数据源配置
*
* @return
*/
@Bean(name = "externalDataSourceProperties")
@Qualifier("externalDataSourceProperties")
@ConfigurationProperties(prefix = "spring.datasource.mybatis.external")
public DataSourceProperties externalDataSourceProperties() {
return new DataSourceProperties();
}
/**
* 业务数据源
*
* @return
*/
@Bean(name = "dataSourceBusiness")
public HikariDataSource dataSourceBusiness() {
DataSourceProperties properties = businessDataSourceProperties();
return properties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
/**
* 外部数据源配置
*
* @return
*/
@Bean(name = "dataSourceExternal")
public HikariDataSource dataSourceExternal() {
return externalDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
}
package com.btismart.trafficdiscretion.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import tk.mybatis.spring.annotation.MapperScan;
import javax.sql.DataSource;
@Configuration
@MapperScan(
basePackages = {"com.btismart.trafficdiscretion.mapper.business"},
sqlSessionFactoryRef = "sqlSessionFactoryBusinessConfig")
public class SqlFactoryConfigBusiness {
@Autowired
@Qualifier("dataSourceBusiness")
private DataSource dataSourceBusiness;
@Bean
public SqlSessionFactory sqlSessionFactoryBusinessConfig() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSourceBusiness);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath:com/btismart/trafficdiscretion/mapper/business/*.xml"));
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
factoryBean.setConfiguration(configuration);
return factoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplateConfigBusiness() throws Exception {
// 使用上面配置的Factory
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryBusinessConfig());
return template;
}
@Bean
public PlatformTransactionManager businessTransactionManager() {
return new DataSourceTransactionManager(dataSourceBusiness);
}
}
package com.btismart.trafficdiscretion.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(
basePackages = {"com.btismart.trafficdiscretion.mapper.external"},
sqlSessionFactoryRef = "sqlSessionFactoryExternalConfig")
public class SqlFactoryConfigExternal {
@Autowired
@Qualifier("dataSourceExternal")
private DataSource dataSourceExternal;
@Bean
public SqlSessionFactory sqlSessionFactoryExternalConfig() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSourceExternal);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath:com/btismart/trafficdiscretion/mapper/external/*.xml"));
return factoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplateConfigExternal() throws Exception {
// 使用上面配置的Factory
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryExternalConfig());
return template;
}
@Bean
public PlatformTransactionManager externalTransactionManager() {
return new DataSourceTransactionManager(dataSourceExternal);
}
}
启动类上排除掉启动时的数据源自动配置
@MapperScan(basePackages = {"com.btismart.trafficdiscretion.mapper.business"})
@EnableScheduling
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class, MybatisAutoConfiguration.class})
public class TrafficDiscretionApplication {
public static void main(String[] args) {
SpringApplication.run(TrafficDiscretionApplication.class, args);
}
}
pom.xml中需要配置打包xml文件
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>