package com.codvision.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.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.codvision.dao.slave12", sqlSessionTemplateRef = "hsSlave12SqlSessionTemplate") //扫描 com.codvision.dao.slave12 包下面的接口类,在编译之后都会生成相应的实现类
public class Slave12SqlConfig {
@Bean(name = "hsSlave12DataSource")
@Primary //在多数据源的时候,使用@Primary注解用于指定其中一个作为主数据源,即如果数据库操作没有指明使用哪个数据源的时候,默认使用主数据源
@ConfigurationProperties(prefix = "spring.datasource.hs.slave12") //读取配置文件中spring.datasource.hs.slave12 前缀的配置 最适用于所有具有相同前缀的分层属性,用于将配置文件中mail开头的属性绑定到POJO中,@Configuration也可以替换成@Component、@Service等其他注解
@Qualifier("hsSlave12DataSource") //判定这个注解要注入到spring中
public DataSource hsDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "hsSlave12SqlSessionFactory")
public SqlSessionFactory hsSqlSessionFactory(@Qualifier("hsSlave12DataSource") DataSource hsDataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
//设置数据源
sqlSessionFactoryBean.setDataSource(hsDataSource);
org.apache.ibatis.session.Configuration config = new org.apache.ibatis.session.Configuration();
config.setMapUnderscoreToCamelCase(true); //设置映射
sqlSessionFactoryBean.setConfiguration(config);
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/dao/slave12/*.xml")); //扫描xml
return sqlSessionFactoryBean.getObject();
}
@Bean(name = "hsSlave12SqlSessionTemplate")
public SqlSessionTemplate hsSlave12SqlSessionTemplate(@Qualifier("hsSlave12SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
#xml的配置