关键词:
在做数据迁移的时候,通常数据库表的结构和数据的格式都会发生变化,采用sql迁移的难度复杂很多,所以可以使用代码进行多数据库操作。本文简单介绍mysql迁移到mysql。其他项目相关配置,请自行查找
1、application.yml
server:
port: 9281
#spring:
# profiles:
# active: dev
#数据库1
datasource1:
url: jdbc:mysql://localhost:3306/ios666_history?useSSL=false&useUnicode=true
username: root
password:
driver-class-name: com.mysql.jdbc.Driver
#数据库2
datasource2:
url: jdbc:mysql://localhost:3306/av8d?useSSL=false&useUnicode=true
username: root
password:
driver-class-name: com.mysql.jdbc.Driver
2.SpringbootApplication 禁止加载自身对DataSource的扫描
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class DatasourceApplication
public static void main(String[] args)
SpringApplication.run(DatasourceApplication.class, args);
3.DataSourceConfig.java 对 application.yml 读取
@Configuration
public class DataSourceConfig
@Bean(name = "dbOneDataSource")
@Primary
@ConfigurationProperties(prefix = "datasource1") // application.yml 中对应属性的前缀
public DataSource dbOneDataSource()
return DataSourceBuilder.create().build();
@Bean(name = "dbTwoDataSource")
@ConfigurationProperties(prefix = "datasource2") // application.yml 中对应属性的前缀
public DataSource dbTwoDataSource()
return DataSourceBuilder.create().build();
这里创建了2个Bean
,由dbOneDataSource
和 dbTwoDataSource
读取并创建数据源。
二、数据源的创建
如果有多个就直接创建多个,下面说说 SqlSessionFactory && SqlSessionTemplate
创建 。为了方便管理,我用内部类去解决。
@Slf4j
public class MybatisConfig
/**
* 第一个数据库 SqlSessionFactory && SqlSessionTemplate 创建
*/
@Configuration
@MapperScan(basePackages = "com.sojson.datasource.one.mapper",
sqlSessionFactoryRef = "sqlSessionFactoryOne",
sqlSessionTemplateRef = "sqlSessionTemplateOne")
public static class DBOne
@Resource
DataSource dbOneDataSource;
@Bean
public SqlSessionFactory sqlSessionFactoryOne() throws Exception
log.info("sqlSessionFactoryOne 创建成功。");
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dbOneDataSource);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/one/*.xml"));
return factoryBean.getObject();
@Bean
public SqlSessionTemplate sqlSessionTemplateOne() throws Exception
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryOne()); // 使用上面配置的Factory
return template;
/**
* 第二个数据库 SqlSessionFactory && SqlSessionTemplate 创建
*/
@Configuration
@MapperScan(basePackages = "com.sojson.datasource.two.mapper",
sqlSessionFactoryRef = "sqlSessionFactoryTwo",
sqlSessionTemplateRef ="sqlSessionTemplateTwo" )
public static class DBTwo
@Resource
DataSource dbTwoDataSource;
@Bean
public SqlSessionFactory sqlSessionFactoryTwo() throws Exception
log.info("sqlSessionFactoryTwo 创建成功。");
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dbTwoDataSource);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/two/*.xml"));
return factoryBean.getObject();
@Bean
public SqlSessionTemplate sqlSessionTemplateTwo() throws Exception
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryTwo()); // 使用上面配置的Factory
return template;
这里要详细说明的一下,因为创建了2套的SqlSessionFactory && SqlSessionTemplate
,那怎么来区分或者说怎么分配数据源呢?
通过注释 :basePackages = "com.sojson.datasource.one.mapper"
来定义第一个数据源 SqlSessionFactory
的mapper
目录。
通过注释 :basePackages = "com.sojson.datasource.two.mapper"
来定义第二个数据源 SqlSessionFactory
的mapper
目录。
三、多数据源测试q
@RequestMapping("api")
@RestController
public class IndexController
@Autowired
OneStockMapper oneStockMapper;
@Autowired
TwoStockMapper twoStockMapper;
@RequestMapping("")
public Map<String,Object> index()
Map<String,Object> result = new HashMap<>();
//第一个数据源
Stock entity = oneStockMapper.selectByPrimaryKey(1);
//第二个数据查询
Stock twoEntity = twoStockMapper.selectByPrimaryKey(1);
result.put("entity",entity);
result.put("twoEntity",twoEntity);
return result;
项目下载地址:
数据同步spingboot连接多个mysql数据库.zip
springboot+mybatis链接多数据库
...据库:https://cloud.tencent.com/developer/article/1676947https://springboot.io/t/topic/2782https://m.imooc.com/article/details?article_id=310840https://blog.csdn.net/u013490585/article/details/108497108技术交流欢迎关注我的微信公众号:程序员大宝。一个乐于分... 查看详情
springboot+mybatis链接多数据库
...据库:https://cloud.tencent.com/developer/article/1676947https://springboot.io/t/topic/2782https://m.imooc.com/article/details?article_id=310840https://blog.csdn.net/u013490585/article/details/108497108技术交流欢迎关注我的微信公众号:程序员大宝。一个乐于分... 查看详情
springboot+mybatis+druid配置多数据源(mysql+postgre)
springboot+mybatis+Druid配置多数据源(mysql+postgre)引入pom依赖设置application多数据源config配置db1config配置(主数据库配置)db2config配置(其他数据库)事务处理mapper层springboot+mybatis+Druid配置多数据源(mysql+postgre)参考资料:第八章springboot+mybatis+... 查看详情
springboot+mybatis多数据源切换
由于公司业务划分了多个数据库,开发一个项目会同事调用多个库,经过学习我们采用了注解+aop的方式实现的1.首先定义一个注解类@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public@interfaceTargetDataSource{ Stringvalue();//此处接收... 查看详情
springboot:mybatis配置多数据源
第一个数据源:importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.stereotype.Component;@Component@ConfigurationProperties(prefix="spring.datasource")publicclas 查看详情
springboot入门之基于druid配置mybatis多数据源
...处理,这篇了解下使用基于基于Druid配置Mybatis多数据源。SpringBoot默认配置数据库连接信息时只需设置url等属性信息就可以了,SpringBoot就会基于约定根据配置信息实例化对象,但是一般大型的项目都是有多个子系统或者多个数据... 查看详情
springboot+mybatis+pagehelper配置多数据源
前言:本文为springboot结合mybatis配置多数据源,在项目当中很多情况是使用主从数据源来读写分离,还有就是操作多库,本文介绍如何一个项目同时使用2个数据源。也希望大家带着思考去学习!博主是最近才学的配置写成博... 查看详情
springboot2.x:mybatis多数据源配置
前言MyBatis多数据源配置,最近在项目建设中,需要在原有系统上扩展一个新的业务模块,特意将数据库分库,以便减少复杂度。本文直接以简单的代码示例,如何对MyBatis多数据源配置。准备创建数据库db_testSETNAMESutf8mb4;SETFOREIGN_... 查看详情
第九章springboot+mybatis+多数据源(aop实现)
在第八章springboot+mybatis+多数据源代码的基础上,做两点修改1、ShopDaopackagecom.xxx.firstboot.dao;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Repository;importcom.xxx. 查看详情
springboot+mybatis+druid+pagehelper实现多数据源并分页
前言本篇文章主要讲述的是SpringBoot整合Mybatis、Druid和PageHelper并实现多数据源和分页。其中SpringBoot整合Mybatis这块,在之前的的一篇文章中已经讲述了,这里就不过多说明了。重点是讲述在多数据源下的如何配置使用Druid和PageHelpe... 查看详情
springboot2+druid+mybatis多数据源配置(代码片段)
...案。读写分离会使用多数据源的使用。下面记录如何搭建SpringBoot2+Druid+Mybatis 多数据源配置以及在使用过程遇到的问题。一、先从pom.xml入手(使用springboot2的版本)<parent><groupId>org.springframework.boot&l 查看详情
第九章springboot+mybatis+多数据源(aop实现)(转载)
本编博客转发自:http://www.cnblogs.com/java-zhao/p/5415896.html 1、ShopDaopackagecom.xxx.firstboot.dao;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Rep 查看详情
第八章springboot+mybatis+多数据源
在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源。代码结构:简要原理:1)DatabaseType列出所有的数据源的key---key2)DatabaseContextHolder是一个线程安全的DatabaseType容器,并提供了向其中设置和... 查看详情
springboot-mybatis多数据源以及踩坑之旅
首先,springboot项目结构如下springboot配置文件内容如下 动态数据源的配置类如下(必须保证能被ComponentScan扫描到):1packagecom.letzgo.config;23importcom.alibaba.druid.pool.DruidDataSource;4importorg.apache.ibatis.session.SqlSessionFacto 查看详情
springboot实现多数据源整合mybatis版(代码片段)
前言本篇博客只讲如何从零到壹地再SpringBoot项目中实现多数据源配置,不谈源码(后续上SpringBoot自动配置等源码)。本篇博客内容基于SpringBootVersion2.5.1。背景一个项目中需要连接多个数据源,我们需要在业务层... 查看详情
springboot实现多数据源整合mybatis版(代码片段)
前言本篇博客只讲如何从零到壹地再SpringBoot项目中实现多数据源配置,不谈源码(后续上SpringBoot自动配置等源码)。本篇博客内容基于SpringBootVersion2.5.1。背景一个项目中需要连接多个数据源,我们需要在业务层... 查看详情
shardingsphere多数据源(springboot+mybatis+shardingsphere+druid)
org.springframeword.boot:spring-boot-starer-web:2.0.4releaseio.shardingsphere:sharding-jdbc-spring-boot-starter:3.0.0M3org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1com.alibaba:druid-spring 查看详情
springboot集成mybatis实现主从(多数据源)分离方案
新建一个Maven项目,最终项目结构如下:多数据源注入到sqlSessionFactoryPOM增加如下依赖:<!--JSON--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId>< 查看详情