博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpingBoot整合多数据源连接
阅读量:6873 次
发布时间:2019-06-26

本文共 3925 字,大约阅读时间需要 13 分钟。

1、多数据源连接的两种方式:分包||注解;

分包:通过包名指定连接那个数据源;

application.properties配置

###datasource1spring.datasource.test1.driver-class-name = com.mysql.jdbc.Driverspring.datasource.test1.jdbc-url = jdbc:mysql://localhost:3306/test01?useUnicode=true&characterEncoding=utf-8spring.datasource.test1.username = rootspring.datasource.test1.password = root###datasource2spring.datasource.test2.driver-class-name = com.mysql.jdbc.Driverspring.datasource.test2.jdbc-url = jdbc:mysql://localhost:3306/test02?useUnicode=true&characterEncoding=utf-8spring.datasource.test2.username = rootspring.datasource.test2.password = root

配置文件中新增两个数据源

 

//DataSource01@Configuration // 注册到springboot容器中@MapperScan(basePackages = "com.itmayiedu.test01", sqlSessionFactoryRef = "test1SqlSessionFactory")public class DataSource1Config {    /**     * @methodDesc: 功能描述:(配置test1数据库)*/    @Bean(name = "test1DataSource")    @ConfigurationProperties(prefix = "spring.datasource.test1")    @Primary    public DataSource testDataSource() {        return DataSourceBuilder.create().build();    }    /**     * @methodDesc: 功能描述:(test1 sql会话工厂)*/    @Bean(name = "test1SqlSessionFactory")    @Primary    public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource)            throws Exception {        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();        bean.setDataSource(dataSource);        // bean.setMapperLocations(        // new        // PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test1/*.xml"));        return bean.getObject();    }    /**     * @methodDesc: 功能描述:(test1 事物管理)*/    @Bean(name = "test1TransactionManager")    @Primary    public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource) {        return new DataSourceTransactionManager(dataSource);    }    @Bean(name = "test1SqlSessionTemplate")    @Primary    public SqlSessionTemplate testSqlSessionTemplate(            @Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {        return new SqlSessionTemplate(sqlSessionFactory);    }}//DataSource2@Configuration // 注册到springboot容器中@MapperScan(basePackages = "com.itmayiedu.test02", sqlSessionFactoryRef = "test2SqlSessionFactory")public class DataSource2Config {    /**     * @methodDesc: 功能描述:(配置test2数据库)*/    @Bean(name = "test2DataSource")    @ConfigurationProperties(prefix = "spring.datasource.test2")    public DataSource testDataSource() {        return DataSourceBuilder.create().build();    }    /**     *      * @methodDesc: 功能描述:(test2 sql会话工厂)*/    @Bean(name = "test2SqlSessionFactory")    public SqlSessionFactory testSqlSessionFactory(@Qualifier("test2DataSource") DataSource dataSource)            throws Exception {        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();        bean.setDataSource(dataSource);        // bean.setMapperLocations(        // new        // PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test2/*.xml"));        return bean.getObject();    }    /**     * @methodDesc: 功能描述:(test2 事物管理)*/    @Bean(name = "test2TransactionManager")    public DataSourceTransactionManager testTransactionManager(@Qualifier("test2DataSource") DataSource dataSource) {        return new DataSourceTransactionManager(dataSource);    }    @Bean(name = "test2SqlSessionTemplate")    public SqlSessionTemplate testSqlSessionTemplate(            @Qualifier("test2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {        return new SqlSessionTemplate(sqlSessionFactory);    }}

多数源事务注意:

在多数据源的情况下,使用@Transactional注解时,应该指定事务管理者

Springboot1.5的时候 没有默认指向数据源 会报错

Springboot2.0的时候 不报错

@Transactional(transactionManager = "test2TransactionManager")

 

 

注解原理:通过AOP技术拦截,手写注解,当传递的参数是DataSource1则获取DataSource1的连接;同理其他数据源;【比较麻烦,当工程较大时,方法较多使用的注解也多,容易忘掉;推荐分包方式】

转载于:https://www.cnblogs.com/yuhuiqing/p/10701881.html

你可能感兴趣的文章
直播竞答必读:一定要提前知道的技术坑和新玩法
查看>>
React 中集成 Markdown编辑器
查看>>
Spring Boot 最佳实践(五)Spring Data JPA 操作 MySQL 8
查看>>
由三道题引伸出来的思考
查看>>
React 开发实战(一)- Repeat 组件
查看>>
小程序云开发全套实战教程(最全)
查看>>
单页引用中使用百度地图
查看>>
对 PHP 中依赖注入和控制反转的理解
查看>>
springMVC原理
查看>>
[Python3网络爬虫开发实战] 2-爬虫基础 3-爬虫的基本原理
查看>>
Java IO输入输出及乱码问题
查看>>
Linux服务器配置——简介
查看>>
react项目中使用mocha结合chai断言库进行单元测试
查看>>
nfs
查看>>
Angular vs React 最全面深入对比
查看>>
containerd项目正式从CNCF毕业
查看>>
与广告“互动”—情景互动式创意广告
查看>>
使用外部表查看ORACLE报警日志
查看>>
业务发展如何利用创新驱动力量?
查看>>
云数据加密公司LOCKet获千万级Pre-A融资
查看>>