1、创建一个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. }

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

  1. spring.datasource.data1.url=jdbc:mysql://127.0.0.1:3306/mysql-boot
  2. spring.datasource.data1.username=root
  3. spring.datasource.data1.password=123123
  4. spring.datasource.data1.driver-class-name=com.mysql.jdbc.Driver
  5.  
  6. spring.datasource.data2.url=jdbc:mysql://127.0.0.1:3306/mysql-confswh
  7. spring.datasource.data2.username=root
  8. spring.datasource.data2.password=123123
  9. spring.datasource.data2.driver-class-name=com.mysql.jdbc.Driver

3、两个测试的Service&Mapper

4、Controller调用

  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. }

springboot-配置多个数据源的更多相关文章

  1. 037.[转] springboot 配置多个数据源

    1.在application.properties文件 配置两个数据源 #默认使用 tomcat-jdbc spring.datasource.type=org.apache.tomcat.jdbc. ...

  2. springboot 配置quart多数据源

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

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

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

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

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

  5. springboot配置Druid数据源

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. Git错误:error:failed to push some refs to 'git@gitee.com:name/project.git'

    大家在通过本地仓库上传文件到远程仓库时,会报出 error:failed to push some refs to 'git@gitee.com:name/project.git' 的错误. 解决方法 ...

  2. CSS 让div,span等块级、非快级元素排列在同一行

    让div,span等块级.非快级元素排列在同一行 by:授客 QQ:1033553122 例子:让两个div排列在同一行 给div添加float样式 <!DOCTYPE html> < ...

  3. fluwx使用的问题

    今天搞了下fluwx这个库,也是遇到了很多问题. 问题一:‘包名不对,请检查包名是否与开放平台上填写的一致’ 显示把文档这些看了遍,但是也不是很清楚,还加了下群问别人,主要我没有开发过Android, ...

  4. 剑指offer 28:字符串的排列

    题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述 输入 ...

  5. html 初识 文档结构 常用标签

    HTML初识 △HTML: 超文本标记语言,是一种用于创建网页的标记语言,不是编程语言,没有逻辑 本质上是浏览器可识别的规则 我们按照规则写网页,浏览器根据规则渲染我们的网页.对于不同的浏览器,对同一 ...

  6. ssh免密登录配置后,登陆失败问题

    本文转自博主:_Lance 本文转自:https://blog.csdn.net/qq_19648191/article/details/54845440 相关资料http://blog.csdn.n ...

  7. Internet Download Manager是什么?

    在互联网下载管理器(也被称为IDM)是一款共享软件下载管理器,这意味着你可以下载该程序,并尝试它的试用期内免费. 以下是IDM最佳功能的列表: 支持多种浏览器和应用程序 一键下载文件 内置防病毒检查 ...

  8. LG5202 「USACO2019JAN」Redistricting 动态规划+堆/单调队列优化

    问题描述 LG5202 题解 \[opt[i]=xx+(cnt[i]-cnt[yy]<=0)\] 发现\(cnt[i]-cnt[yy] <= 0\)只能有两种取值 于是直接堆优化即可 \( ...

  9. Win32 程序开发:创建一个应用程序窗口

    一.创建一个应用程序窗口 代码如下: // 头文件 #include <windows.h> // 全局变量 WCHAR g_lpszClassName[] = L"CLASSN ...

  10. 【AtCoder】AtCoder Grand Contest 039 解题报告

    点此进入比赛 \(A\):Connection and Disconnection(点此看题面) 大致题意: 给你一个字符串,将它重复\(k\)次.进行尽量少的操作,每次修改一个位置上的字符,使得不存 ...