037.[转] springboot 配置多个数据源
1、在application.properties文件 配置两个数据源
- #默认使用 tomcat-jdbc
- spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
- spring.datasource.data1.url=jdbc:mysql://127.0.0.1:3306/mysql-boot
- spring.datasource.data1.username=root
- spring.datasource.data1.password=123123
- spring.datasource.data1.driver-class-name=com.mysql.jdbc.Driver
- spring.datasource.data2.url=jdbc:mysql://127.0.0.1:3306/mysql-confswh
- spring.datasource.data2.username=root
- spring.datasource.data2.password=123123
- spring.datasource.data2.driver-class-name=com.mysql.jdbc.Driver
2、创建一个datasource包,新建DataSource1,DataSource2两个文件,通过注解来配置数据源
DataSource1
- package com.springboot.datasource;
- 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.autoconfigure.jdbc.DataSourceBuilder;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Primary;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import javax.sql.DataSource;
- @Configuration//注解到spring容器中
- @MapperScan(basePackages = "com.springboot.data1.mapper",sqlSessionFactoryRef = "data1SqlSessionFactory")
- public class DataSource1 {
- /**
- * 返回data1数据库的数据源
- * @return
- */
- @Bean(name="data1Source")
- @Primary//主数据源
- @ConfigurationProperties(prefix = "spring.datasource.data1")
- public DataSource dataSource(){
- return DataSourceBuilder.create().build();
- }
- /**
- * 返回data1数据库的会话工厂
- * @param ds
- * @return
- * @throws Exception
- */
- @Bean(name = "data1SqlSessionFactory")
- @Primary
- public SqlSessionFactory sqlSessionFactory(@Qualifier("data1Source") DataSource ds) throws Exception{
- SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
- bean.setDataSource(ds);
- return bean.getObject();
- }
- /**
- * 返回data1数据库的会话模板
- * @param sessionFactory
- * @return
- * @throws Exception
- */
- @Bean(name = "data1SqlSessionTemplate")
- @Primary
- public SqlSessionTemplate sqlSessionTemplate(@Qualifier("data1SqlSessionFactory") SqlSessionFactory sessionFactory) throws Exception{
- return new SqlSessionTemplate(sessionFactory);
- }
- /**
- * 返回data1数据库的事务
- * @param ds
- * @return
- */
- @Bean(name = "data1TransactionManager")
- @Primary
- public DataSourceTransactionManager transactionManager(@Qualifier("data1Source") DataSource ds){
- return new DataSourceTransactionManager(ds);
- }
- }
DataSource2:
- package com.springboot.datasource;
- 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.autoconfigure.jdbc.DataSourceBuilder;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import javax.sql.DataSource;
- @Configuration//注解到spring容器中
- @MapperScan(basePackages = "com.springboot.data2.mapper",sqlSessionFactoryRef = "data2SqlSessionFactory")
- public class DataSource2 {
- /**
- * 返回data2数据库的数据源
- * @return
- */
- @Bean(name="data2Source")
- @ConfigurationProperties(prefix = "spring.datasource.data2")
- public DataSource dataSource(){
- return DataSourceBuilder.create().build();
- }
- /**
- * 返回data2数据库的会话工厂
- * @param ds
- * @return
- * @throws Exception
- */
- @Bean(name = "data2SqlSessionFactory")
- public SqlSessionFactory sqlSessionFactory(@Qualifier("data2Source") DataSource ds) throws Exception{
- SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
- bean.setDataSource(ds);
- return bean.getObject();
- }
- /**
- * 返回data2数据库的会话模板
- * @param sessionFactory
- * @return
- * @throws Exception
- */
- @Bean(name = "data2SqlSessionTemplate")
- public SqlSessionTemplate sqlSessionTemplate(@Qualifier("data2SqlSessionFactory") SqlSessionFactory sessionFactory) throws Exception{
- return new SqlSessionTemplate(sessionFactory);
- }
- /**
- * 返回data2数据库的事务
- * @param ds
- * @return
- */
- @Bean(name = "data2TransactionManager")
- public DataSourceTransactionManager transactionManager(@Qualifier("data2Source") DataSource ds){
- return new DataSourceTransactionManager(ds);
- }
- }
3、测试 Service&Mapper
- @RequestMapping("getTopicList")
- public List<Map<String,Object>> getTopicList(){
- List<Map<String,Object>> list1 = userServiceData1.getTopicListData1();
- List<Map<String,Object>> list2 = userServiceData2.getTopicListData2();
- return list1;
- }
https://www.cnblogs.com/lijianda/p/11022892.html
附:
http://www.demodashi.com/demo/14622.html
037.[转] springboot 配置多个数据源的更多相关文章
- springboot 配置quart多数据源
Springboot版本为2.1.6 多数据源配置使用druid进行配置,数据库使用的为Oracle11g,如果使用的是MySQL,直接将数据库的地址和驱动改一下即可 <parent> & ...
- 使用springboot配置和注入数据源属性的方法和步骤
/** 1.书写一个名为resources/application.properties的属性文件---->书写一个配置属性类,类名为: **/ 文件:application.propertie ...
- Springboot配置连接两个数据库
背景: 项目中需要从两个不同的数据库查询数据,之前实现方法是:springboot配置连接一个数据源,另一个使用jdbc代码连接. 为了改进,现在使用SpringBoot配置连接两个数据源 实现效果: ...
- springboot配置Druid数据源
springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...
- SpringBoot入门之基于Druid配置Mybatis多数据源
上一篇了解了Druid进行配置连接池的监控和慢sql处理,这篇了解下使用基于基于Druid配置Mybatis多数据源.SpringBoot默认配置数据库连接信息时只需设置url等属性信息就可以了,Sp ...
- SpringBoot配置多数据源时遇到的问题
SpringBoot配置多数据源 参考代码:Spring Boot 1.5.8.RELEASE同时配置Oracle和MySQL 原作者用的是1.5.8版本的SpringBoot,在升级到2.0.*之后 ...
- springboot配置多数据源(JdbcTemplate方式)
在实际开发中可能会遇到需要配置多个数据源的情况,比如:需要使用多个host.需要使用多种数据库(MySql.Oracle.SqlServer…) 如果使用springboot开发,可做如下配置: Co ...
- 接管SpringBoot对Activiti的数据源自动配置
SpringBoot的自动配置真的让人又爱又恨,但还是爱更多一点. SpringBoot想要帮我们自动配置好一切,但是有时候配置的却并不是我们需要的,甚至有时候会默默的坑我们. 我的项目是一个多数据源 ...
- SpringBoot整合Mybatis,多数据源,事务,支持java -jar 启动.
用了一段时间SpringBoot,之前配置MYBATIS ,在打包WAR 放到tomcat下正常,但是WAR已经过时了,现在流行直接打包JAR 丢到DOCKER 里,无奈JAR 启动的时候MAPPER ...
随机推荐
- 基于V6的中移动物联测试例子,当前测试还挺稳定
下载: 链接:https://pan.baidu.com/s/1Gz8mEffDGXNSK8lIsAIUEg 提取码:2sur 测试步骤看此贴,跟V7开发板是一样的: 基于H7的中移动物联例子以及 ...
- 使用StampedLock
/** * StampedLock和ReadWriteLock相比,改进之处在于:读的过程中也允许获取写锁后写入!这样一来,我们读的数据就可能不一致,所以,需要一点额外的代码来判断读的过程中是否有写入 ...
- 一起学Spring之基础篇
本文主要讲解Spring的基础环境搭建以及演变由来,仅供学习分享使用,如有不足之处,还请指正. 什么是Spring ? Spring是一个开源框架,用来处理业务逻辑层和其他层之间的耦合问题.因此Spr ...
- 团队项目之Scrum3
小组:BLACK PANDA 时间:2019.11.23 每天举行站立式会议 提供当天站立式会议照片一张 2 昨天已完成的工作 2 完善用户注册的 ...
- npm 使用过程中报错问题-及npm使用
原文地址:https://blog.csdn.net/u013022210/article/details/77740519 1.以下为报错具体详情:node 8.1.2 版本问题:其他空间安装成功但 ...
- 004.Windows Server 故障转移群集 (WSFC)简介
一 WSFC 简介 1.1 WSFC 概述 “Windows Server 故障转移群集”(WSFC) 群集是一组独立的服务器,它们共同协作以提高应用程序和服务的可用性.SQL Server 2012 ...
- 10. 函数-lambda函数及高阶函数
一.匿名函数解析 关键字lambda表示匿名函数,冒号前面的n表示函数参数,可以有多个参数.匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果. 用匿名函数有 ...
- 为什么有的插件安装需要用Vue.use()方法
问题 相信很多人在用Vue使用别人的组件时,会用到 Vue.use() .例如:Vue.use(VueRouter).Vue.use(MintUI).但是用 axios时,就不需要用 Vue.use( ...
- Umi + Dva + Antd的React项目实践
记录一下最近项目所用到的技术React + Dva + Antd + umi ,以免忘记.之前没有用过它们其中一个,也是慢慢摸索,了解数据整个流程. 先了解下概念 React 不多说,3大框架之一: ...
- 搞定vscode编写java(手把手篇)
1: 下载VSCODE 本来我写过一个 vscode 编写java 帖子,但是 还是很多人私信我,下面写一个手把手教程 原文地址: https://www.cnblogs.com/dgwblog/p/ ...