<!-- mybatis基于springboot支持 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!--数据库连接池druid基于springboot支持-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
注:这里引入的jar包要支持springBoot
datasource:
first:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/studer
username: root
password: root
second:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/duibiao
username: root
password: root
/**
* @description:
* @author: daqiufeng
* @date: 2019-12-20 10:17
*/
@Configuration //将类注册到springboot容器中
@MapperScan(basePackages = "com.example.demo.mapper.firstMapper",sqlSessionFactoryRef = "firstSqlSessionFactory")
public class FirstDataSourceConfig {
//mapper.xml 路径
static String mapperLocation="classpath:mybatis/first/*/*/*.xml";
//mybatisConfig 路径
static String mybatisConfig = "classpath:mybatis/first/mybatis-config.xml";
//entity路径
static String pojo = "com.example.demo.entity";
/**
*
* @return
*/
@Bean(name ="firstDatasource") //注入到的容器
@ConfigurationProperties(prefix = "datasource.first") //获取配置文件信息
@Primary //设置为优先,多个数据源必须指定一个
public DataSource firstDatasource(){
return DruidDataSourceBuilder.create().build();
}
//创建第一数据源事务
@Primary
@Bean(name="firstTranscation")
public DataSourceTransactionManager firstTranscation(){
return new DataSourceTransactionManager(firstDatasource());
}
//创建第一数据源Mybatis的连接会话工厂
@Primary
@Bean(name="firstSqlSessionFactory")
public SqlSessionFactory firstSqlSessionFactoryRef(@Qualifier("firstDatasource")DataSource firstDatasource) throws Exception {
/* //mybatis 配置信息
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
//开启驼峰
configuration.setMapUnderscoreToCamelCase(true);*/
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(firstDatasource);
//指定Mapper.xml路径
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocation));
//指定 mybatis 配置文件
sessionFactoryBean.setConfigLocation(new DefaultResourceLoader().getResource(mybatisConfig));
//指定 实体类 的路径
sessionFactoryBean.setTypeAliasesPackage(pojo);
return sessionFactoryBean.getObject();
}
}
第一数据源配置完成,能够正常启动
/**
* @description:
* @author: daqiufeng
* @date: 2019-12-23 9:01
*/
@Configuration
@MapperScan(basePackages = "com.example.demo.mapper.secondMapper",sqlSessionFactoryRef = "secoundSqlSessionFactory")
public class SecoundDataSourceConfig {
static String MapperLocation = "classpath:mybatis/secound/*/*/*.xml";
static String mybatisConfig="classpath:mybatis/secound/mybatis-config.xml";
static String pojo = "com.example.demo.entity";
/**
* 创建数据源 指定数据源配置信息
* @return
*/
@Bean(name="secoundDataSource")
@ConfigurationProperties(prefix = "datasource.second")
public DataSource secoundDataSource(){
return DruidDataSourceBuilder.create().build();
}
/**
* 创建该数据源事务
*/
@Bean(name="secoundTranscation")
public DataSourceTransactionManager transactionManager(){
return new DataSourceTransactionManager(secoundDataSource());
}
/**
* 创建mybatis会话工厂
*/
@Bean(name="secoundSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("secoundDataSource")DataSource secoundDataSource) throws Exception {
//创建工厂实例
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
//放入数据源
sessionFactoryBean.setDataSource(secoundDataSource);
//指定Mapper.xml路径
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MapperLocation));
//指定mybatis-config.xml路径
sessionFactoryBean.setConfigLocation(new DefaultResourceLoader().getResource(mybatisConfig));
//指定实体类路径
sessionFactoryBean.setTypeAliasesPackage(pojo);
return sessionFactoryBean.getObject();
}
}
1>
创建会话工厂是未指定bean的name
2>多数据源使用事务
需要使用指定的事务 @Transactional(transactionManager = "")
原文:https://www.cnblogs.com/xxjh/p/12082739.html