引言
废话不多,直接开造
一.配置文件配置
1.数据库连接配置:
#db
spring.datasource.one.jdbc-url = jdbc:oracle:thin:@172.168.134.55:2222/oracletest
spring.datasource.one.username = root
spring.datasource.one.password = root
spring.datasource.one.driverClassName = oracle.jdbc.driver.OracleDriver
spring.datasource.two.jdbc-url = jdbc:mysql://172.168.134.56:2223/mysqltest1?socketTimeout=60000&connectTimeout=30000&useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.two.username = root
spring.datasource.two.password = root
spring.datasource.two.driverClassName = com.mysql.jdbc.Driver
spring.datasource.three.jdbc-url = jdbc:mysql://172.168.134.57:2224/mysqltest2?socketTimeout=60000&connectTimeout=30000&useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.three.username = root
spring.datasource.three.password = root
spring.datasource.three.driverClassName = com.mysql.jdbc.Driver
2.PageHelper分页插件配置
#pagehelper.helperDialect = oracle #不要指定分页数据库类型
pagehelper.reasonable = false
pagehelper.supportMethodsArguments = true #默认为 false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,自动分页
pagehelper.params = count=countSql
pagehelper.auto-dialect = true #自动选择数据库类型
pagehelper.auto-runtime-dialect = true #运行时选择分页语句
二.Application去除自动配置数据源与mybatis自动配置
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, MybatisAutoConfiguration.class})
三.Configuration类
有多少个数据源就配置多少个config
one
@Configuration
@MapperScan(basePackages = "cn.com.report.dao.one",sqlSessionTemplateRef = "oneSqlSessionTemplate")
public class OneMyBatisConfig {
//xml文件地址
static final String MAPPER_LOCATION = "classpath:mybatis/one/*.xml";
@Bean(name = "oneDataSource")
@ConfigurationProperties(prefix = "spring.datasource.one")//配置前缀
@Primary //主数据源,其他几个不用这个注解
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "oneSqlSessionFactory")
@Primary
public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("oneDataSource")DataSource oneDataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(oneDataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resolver.getResources(MAPPER_LOCATION));
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
sqlSessionFactoryBean.setConfiguration(configuration);
return sqlSessionFactoryBean.getObject();
}
@Bean(name = "oneTransactionManager")
@Primary
public DataSourceTransactionManager testTransactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean(name = "oneSqlSessionTemplate")
@Primary
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("oneSqlSessionFactory")SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); }
}
two
@Configuration
@MapperScan(basePackages = "cn.com.report.dao.two",sqlSessionTemplateRef = "twoSqlSessionTemplate")
public class TwoMyBatisConfig {
//xml文件地址
static final String MAPPER_LOCATION = "classpath:mybatis/two/*.xml";
@Bean(name = "twoDataSource")
@ConfigurationProperties(prefix = "spring.datasource.two")//配置前缀
@Primary
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "twoSqlSessionFactory")
@Primary
public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("twoDataSource")DataSource twoDataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(twoDataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resolver.getResources(MAPPER_LOCATION));
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
sqlSessionFactoryBean.setConfiguration(configuration);
return sqlSessionFactoryBean.getObject();
}
@Bean(name = "twoTransactionManager")
@Primary
public DataSourceTransactionManager testTransactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean(name = "twoSqlSessionTemplate")
@Primary
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("twoSqlSessionFactory")SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); }
}
three
@Configuration
@MapperScan(basePackages = "cn.com.report.dao.three",sqlSessionTemplateRef = "threeSqlSessionTemplate")
public class ThreeMyBatisConfig {
//xml文件地址
static final String MAPPER_LOCATION = "classpath:mybatis/three/*.xml";
@Bean(name = "threeDataSource")
@ConfigurationProperties(prefix = "spring.datasource.three")//配置前缀
@Primary
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "threeSqlSessionFactory")
@Primary
public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("threeDataSource")DataSource threeDataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(threeDataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resolver.getResources(MAPPER_LOCATION));
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
sqlSessionFactoryBean.setConfiguration(configuration);
return sqlSessionFactoryBean.getObject();
}
@Bean(name = "threeTransactionManager")
@Primary
public DataSourceTransactionManager testTransactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean(name = "threeSqlSessionTemplate")
@Primary
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("threeSqlSessionFactory")SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); }
}
注意xml文件与dao文件地址与目录结构
完成!