1、在application.properties文件 配置两个数据源

  1. #默认使用 tomcat-jdbc
  2. spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
  3.  
  4. spring.datasource.data1.url=jdbc:mysql://127.0.0.1:3306/mysql-boot
  5. spring.datasource.data1.username=root
  6. spring.datasource.data1.password=123123
  7. spring.datasource.data1.driver-class-name=com.mysql.jdbc.Driver
  8.  
  9. spring.datasource.data2.url=jdbc:mysql://127.0.0.1:3306/mysql-confswh
  10. spring.datasource.data2.username=root
  11. spring.datasource.data2.password=123123
  12. spring.datasource.data2.driver-class-name=com.mysql.jdbc.Driver

 2、创建一个datasource包,新建DataSource1,DataSource2两个文件,通过注解来配置数据源

DataSource1

  1. package com.springboot.datasource;
  2.  
  3. import org.apache.ibatis.session.SqlSessionFactory;
  4. import org.mybatis.spring.SqlSessionFactoryBean;
  5. import org.mybatis.spring.SqlSessionTemplate;
  6. import org.mybatis.spring.annotation.MapperScan;
  7. import org.springframework.beans.factory.annotation.Qualifier;
  8. import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
  9. import org.springframework.boot.context.properties.ConfigurationProperties;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.context.annotation.Primary;
  13. import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  14.  
  15. import javax.sql.DataSource;
  16.  
  17. @Configuration//注解到spring容器中
  18. @MapperScan(basePackages = "com.springboot.data1.mapper",sqlSessionFactoryRef = "data1SqlSessionFactory")
  19. public class DataSource1 {
  20.  
  21. /**
  22. * 返回data1数据库的数据源
  23. * @return
  24. */
  25. @Bean(name="data1Source")
  26. @Primary//主数据源
  27. @ConfigurationProperties(prefix = "spring.datasource.data1")
  28. public DataSource dataSource(){
  29. return DataSourceBuilder.create().build();
  30. }
  31.  
  32. /**
  33. * 返回data1数据库的会话工厂
  34. * @param ds
  35. * @return
  36. * @throws Exception
  37. */
  38. @Bean(name = "data1SqlSessionFactory")
  39. @Primary
  40. public SqlSessionFactory sqlSessionFactory(@Qualifier("data1Source") DataSource ds) throws Exception{
  41. SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
  42. bean.setDataSource(ds);
  43. return bean.getObject();
  44. }
  45.  
  46. /**
  47. * 返回data1数据库的会话模板
  48. * @param sessionFactory
  49. * @return
  50. * @throws Exception
  51. */
  52. @Bean(name = "data1SqlSessionTemplate")
  53. @Primary
  54. public SqlSessionTemplate sqlSessionTemplate(@Qualifier("data1SqlSessionFactory") SqlSessionFactory sessionFactory) throws Exception{
  55. return new SqlSessionTemplate(sessionFactory);
  56. }
  57.  
  58. /**
  59. * 返回data1数据库的事务
  60. * @param ds
  61. * @return
  62. */
  63. @Bean(name = "data1TransactionManager")
  64. @Primary
  65. public DataSourceTransactionManager transactionManager(@Qualifier("data1Source") DataSource ds){
  66. return new DataSourceTransactionManager(ds);
  67. }
  68. }

DataSource2:

  1. package com.springboot.datasource;
  2.  
  3. import org.apache.ibatis.session.SqlSessionFactory;
  4. import org.mybatis.spring.SqlSessionFactoryBean;
  5. import org.mybatis.spring.SqlSessionTemplate;
  6. import org.mybatis.spring.annotation.MapperScan;
  7. import org.springframework.beans.factory.annotation.Qualifier;
  8. import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
  9. import org.springframework.boot.context.properties.ConfigurationProperties;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  13.  
  14. import javax.sql.DataSource;
  15.  
  16. @Configuration//注解到spring容器中
  17. @MapperScan(basePackages = "com.springboot.data2.mapper",sqlSessionFactoryRef = "data2SqlSessionFactory")
  18. public class DataSource2 {
  19.  
  20. /**
  21. * 返回data2数据库的数据源
  22. * @return
  23. */
  24. @Bean(name="data2Source")
  25. @ConfigurationProperties(prefix = "spring.datasource.data2")
  26. public DataSource dataSource(){
  27. return DataSourceBuilder.create().build();
  28. }
  29.  
  30. /**
  31. * 返回data2数据库的会话工厂
  32. * @param ds
  33. * @return
  34. * @throws Exception
  35. */
  36. @Bean(name = "data2SqlSessionFactory")
  37. public SqlSessionFactory sqlSessionFactory(@Qualifier("data2Source") DataSource ds) throws Exception{
  38. SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
  39. bean.setDataSource(ds);
  40. return bean.getObject();
  41. }
  42.  
  43. /**
  44. * 返回data2数据库的会话模板
  45. * @param sessionFactory
  46. * @return
  47. * @throws Exception
  48. */
  49. @Bean(name = "data2SqlSessionTemplate")
  50. public SqlSessionTemplate sqlSessionTemplate(@Qualifier("data2SqlSessionFactory") SqlSessionFactory sessionFactory) throws Exception{
  51. return new SqlSessionTemplate(sessionFactory);
  52. }
  53.  
  54. /**
  55. * 返回data2数据库的事务
  56. * @param ds
  57. * @return
  58. */
  59. @Bean(name = "data2TransactionManager")
  60. public DataSourceTransactionManager transactionManager(@Qualifier("data2Source") DataSource ds){
  61. return new DataSourceTransactionManager(ds);
  62. }
  63. }

3、测试 Service&Mapper

  1. @RequestMapping("getTopicList")
  2. public List<Map<String,Object>> getTopicList(){
  3. List<Map<String,Object>> list1 = userServiceData1.getTopicListData1();
  4. List<Map<String,Object>> list2 = userServiceData2.getTopicListData2();
  5. return list1;
  6. }

https://www.cnblogs.com/lijianda/p/11022892.html

附:

http://www.demodashi.com/demo/14622.html

037.[转] springboot 配置多个数据源的更多相关文章

  1. springboot 配置quart多数据源

    Springboot版本为2.1.6 多数据源配置使用druid进行配置,数据库使用的为Oracle11g,如果使用的是MySQL,直接将数据库的地址和驱动改一下即可 <parent> & ...

  2. 使用springboot配置和注入数据源属性的方法和步骤

    /** 1.书写一个名为resources/application.properties的属性文件---->书写一个配置属性类,类名为: **/ 文件:application.propertie ...

  3. Springboot配置连接两个数据库

    背景: 项目中需要从两个不同的数据库查询数据,之前实现方法是:springboot配置连接一个数据源,另一个使用jdbc代码连接. 为了改进,现在使用SpringBoot配置连接两个数据源 实现效果: ...

  4. springboot配置Druid数据源

    springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...

  5. SpringBoot入门之基于Druid配置Mybatis多数据源

    上一篇了解了Druid进行配置连接池的监控和慢sql处理,这篇了解下使用基于基于Druid配置Mybatis多数据源.SpringBoot默认配置数据库连接信息时只需设置url等属性信息就可以了,Sp ...

  6. SpringBoot配置多数据源时遇到的问题

    SpringBoot配置多数据源 参考代码:Spring Boot 1.5.8.RELEASE同时配置Oracle和MySQL 原作者用的是1.5.8版本的SpringBoot,在升级到2.0.*之后 ...

  7. springboot配置多数据源(JdbcTemplate方式)

    在实际开发中可能会遇到需要配置多个数据源的情况,比如:需要使用多个host.需要使用多种数据库(MySql.Oracle.SqlServer…) 如果使用springboot开发,可做如下配置: Co ...

  8. 接管SpringBoot对Activiti的数据源自动配置

    SpringBoot的自动配置真的让人又爱又恨,但还是爱更多一点. SpringBoot想要帮我们自动配置好一切,但是有时候配置的却并不是我们需要的,甚至有时候会默默的坑我们. 我的项目是一个多数据源 ...

  9. SpringBoot整合Mybatis,多数据源,事务,支持java -jar 启动.

    用了一段时间SpringBoot,之前配置MYBATIS ,在打包WAR 放到tomcat下正常,但是WAR已经过时了,现在流行直接打包JAR 丢到DOCKER 里,无奈JAR 启动的时候MAPPER ...

随机推荐

  1. 基于V6的中移动物联测试例子,当前测试还挺稳定

    下载: 链接:https://pan.baidu.com/s/1Gz8mEffDGXNSK8lIsAIUEg   提取码:2sur 测试步骤看此贴,跟V7开发板是一样的: 基于H7的中移动物联例子以及 ...

  2. 使用StampedLock

    /** * StampedLock和ReadWriteLock相比,改进之处在于:读的过程中也允许获取写锁后写入!这样一来,我们读的数据就可能不一致,所以,需要一点额外的代码来判断读的过程中是否有写入 ...

  3. 一起学Spring之基础篇

    本文主要讲解Spring的基础环境搭建以及演变由来,仅供学习分享使用,如有不足之处,还请指正. 什么是Spring ? Spring是一个开源框架,用来处理业务逻辑层和其他层之间的耦合问题.因此Spr ...

  4. 团队项目之Scrum3

    小组:BLACK PANDA 时间:2019.11.23 每天举行站立式会议 提供当天站立式会议照片一张 2                            昨天已完成的工作 2 完善用户注册的 ...

  5. npm 使用过程中报错问题-及npm使用

    原文地址:https://blog.csdn.net/u013022210/article/details/77740519 1.以下为报错具体详情:node 8.1.2 版本问题:其他空间安装成功但 ...

  6. 004.Windows Server 故障转移群集 (WSFC)简介

    一 WSFC 简介 1.1 WSFC 概述 “Windows Server 故障转移群集”(WSFC) 群集是一组独立的服务器,它们共同协作以提高应用程序和服务的可用性.SQL Server 2012 ...

  7. 10. 函数-lambda函数及高阶函数

    一.匿名函数解析 ​ 关键字lambda表示匿名函数,冒号前面的n表示函数参数,可以有多个参数.匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果. ​ 用匿名函数有 ...

  8. 为什么有的插件安装需要用Vue.use()方法

    问题 相信很多人在用Vue使用别人的组件时,会用到 Vue.use() .例如:Vue.use(VueRouter).Vue.use(MintUI).但是用 axios时,就不需要用 Vue.use( ...

  9. Umi + Dva + Antd的React项目实践

    记录一下最近项目所用到的技术React + Dva + Antd + umi ,以免忘记.之前没有用过它们其中一个,也是慢慢摸索,了解数据整个流程. 先了解下概念 React 不多说,3大框架之一: ...

  10. 搞定vscode编写java(手把手篇)

    1: 下载VSCODE 本来我写过一个 vscode 编写java 帖子,但是 还是很多人私信我,下面写一个手把手教程 原文地址: https://www.cnblogs.com/dgwblog/p/ ...