记一次mybatis连接多个数据源的操作

首先yml数据源配置

spring:
  datasource:
    db1:
      url: jdbc:mysql://localhost/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
      username: root
      password: 123
    db2:
      url: jdbc:mysql://localhost/uu?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
      username: root
      password: 123

然后关闭boot自动加载yml的配置

//关闭boot自带的加载配置	yml配置
@SpringBootApplication(exclude = {
		DataSourceAutoConfiguration.class
})
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

关闭了加载配置 自己配一个sqlSessionTemplate执行数据层(两份 注意名称)

@Configuration
@MapperScan(basePackages ="com.mybatistest.demo.db1.mapper",sqlSessionTemplateRef = "userSqlSessionTemplate")
public class Data1Config {
    @Value("${spring.datasource.db1.url}")
    private String jdbcUrl;
    @Value("${spring.datasource.db1.username}")
    private String username;
    @Value("${spring.datasource.db1.password}")
    private String password;

    @Bean("userDataSource")
    @Primary
    public HikariDataSource dataSource() {
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl(jdbcUrl);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setConnectionInitSql("SET NAMES utf8mb4");
        return dataSource;
    }

    @Bean("userSqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactory(@Qualifier("userDataSource") DataSource dataSource) throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        return sessionFactory.getObject();
    }

    @Bean("userTransactionManager")
    @Primary
    public DataSourceTransactionManager transactionManager(@Qualifier("userDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean("userSqlSessionTemplate")
    @Primary
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("userSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

mapper上添加要使用的sqlSession模板注解

@Qualifier("userSqlSessionTemplate")
public interface UserMapper{
    @Select("select * from user where id = #{id}")
    User queryUserById(Integer id);
}

xml形式需要添加如下配置(config配置中)

    @Bean("userSqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactory(@Qualifier("userDataSource") DataSource dataSource) throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        //  bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/db1/*.xml"));
        return sessionFactory.getObject();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值