采用分包实现多数据源_01

文章目录

            • 1. DB1配置
            • 2. DB2配置
            • 3. yml配置
            • 4. 目标方法
            • 5. 创建2个mapper扫描包

1. DB1配置
package com.mayikt.config;import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;/*** sys-admin数据源** @author gblfy* @date 2022-09-12*/
@Configuration
@MapperScan(basePackages = " com.mayikt.main.mapper", sqlSessionFactoryRef = "db1SqlSessionFactory")
public class DB1DataSourceConfig {static final String MAPPER_LOCATION = "classpath*:/mapping/db1/*.xml";@Primary@Bean("db1DataSource")@ConfigurationProperties(prefix = "spring.datasource.admin")public DataSource getDb1DataSource() {return DataSourceBuilder.create().build();}@Primary@Bean("db1SqlSessionFactory")public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception {// SqlSessionFactoryBean bean = new SqlSessionFactoryBean();//整合mybatisplus时需要采用MybatisSqlSessionFactoryBeanMybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();bean.setDataSource(dataSource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION));return bean.getObject();}@Primary@Bean("db1SqlSessionTemplate")public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("db1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {return new SqlSessionTemplate(sqlSessionFactory);}
}
2. DB2配置
package com.mayikt.config;import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
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.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;/*** sys-order数据源* https://blog.csdn.net/qq_41153943/article/details/124817002** @author gblfy* @date 2022-09-22*/
@Configuration
@MapperScan(basePackages = " com.mayikt.order.mapper", sqlSessionFactoryRef = "db2SqlSessionFactory")
public class DB2DataSourceConfig {static final String MAPPER_LOCATION = "classpath*:/mapping/db2/*.xml";@Bean("db2DataSource")@ConfigurationProperties(prefix = "spring.datasource.order")public DataSource getDb2DataSource() {return DataSourceBuilder.create().build();}@Bean("db2SqlSessionFactory")public SqlSessionFactory db2SqlSessionFactory(@Qualifier("db2DataSource") DataSource dataSource) throws Exception {// SqlSessionFactoryBean bean = new SqlSessionFactoryBean();//整合mybatisplus时需要采用MybatisSqlSessionFactoryBeanMybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();bean.setDataSource(dataSource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION));return bean.getObject();}@Bean("db2SqlSessionTemplate")public SqlSessionTemplate db2SqlSessionTemplate(@Qualifier("db2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {return new SqlSessionTemplate(sqlSessionFactory);}
}
3. yml配置
server:port: 8080
spring:main:allow-bean-definition-overriding: truedatasource:admin: # sys-admindriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://localhost:3306/sys-admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456order: # sys-orderdriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://localhost:3306/sys-order?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456application:name: mayikt-order
4. 目标方法
@Autowiredprivate SysOrderMapper orderMapper;@Autowiredprivate MayiktDictionaryDataMapper dictionaryDataMapper;@Overridepublic String getTestDatasource() {// sys-order数据源  解决事务方案 jtaSysOrder sysOrder = new SysOrder("mayikt");int result = orderMapper.insert(sysOrder);// sys-admin数据源MayiktDictionaryData mayiktDictionaryData = dictionaryDataMapper.selectById(1);return mayiktDictionaryData.getName() + result;}
5. 创建2个mapper扫描包

创建2个mapper扫描包,main.mapper和order.mapper

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

闲鱼直播三周内实现点击率翻倍,我们是这么做到的...

作者:闲鱼技术-莫癫 1. 业务背景 闲鱼直播业务上线后面临的最大问题是增长问题。闲鱼BI同学分析发现,对比短时观看和长时观看人群,发现两部分人群有较明显的兴趣阶段性差异。 业务希望在理解直播、主播和用户的基础根据兴趣对头部优质直播精…

Azure 中国四年扩容 12 倍还不够,微软放话:全球每年新建 50-100 数据中心!

数据已渗透到我们生活和工作的方方面面,如今全球正处于经济发展转型与变革的关键时期,数据作为数字经济的核心生产要素,无疑建设先进的数据中心是科技企业的硬核 IT 实力的有力保证,科技巨头纷纷强势布局数据中心: 据…

打造数字化服务能力,中国联通如何借助云原生技术实现增长突围?

简介: 中国联通与阿里云结合阿里云原生 PaaS、阿里飞天操作系统、阿里云原生数据库以及中国联通天宫平台,共同研发运营商级专有云平台“天宫云”,支撑中国联通核心业务应用。 8 月 13 日,中国联通发布《2020 年半年度报告》&#…

报名倒计时 | 「TeaTalk」技术沙龙成都站再来袭!

在5G浪潮驱动下,数据增长速度远远超过了网络带宽的增速。同时,增强现实、无人驾驶等众多新应用的出现对延迟提出了更高要求。边缘计算将网络边缘上的计算、网络与存储资源组成统一的平台为用户提供服务,使数据在源头附近就能得到及时有效的处…

爱奇艺在 Dubbo 生态下的微服务架构实践

简介: 本文整理自作者于 2020 年云原生微服务大会上的分享《爱奇艺在 Dubbo 生态下的微服务架构实践》,重点介绍了爱奇艺在 Dubbo、Sentinel 等开发框架方面的使用经验以及微服务生态体系的建设经验。 作者 | 周晓军 爱奇艺中间件团队负责人 导读&#…

记 Arthas 实现一次 CPU 排查与代码热更新

简介: 线上代码经常会出现 CPU 占用过高的情况,按以往经验我会使用 top 指令,进一步借助于 jstack 去查看具体信息从而进行问题排查,但基本上都逃不过需要重新发包的局面,及时是一个增量包,应用也需要短暂停…

灵活、高效、智慧,宁畅发布新品及“智定+”战略

4月21日,2021宁畅新品暨战略发布会在京举办,宁畅发布了新品服务器“G40”系列,并推出 “智定”战略。该战略旨在智能时代为用户提供灵活、高效、智慧的定制化基础设施和服务。 图:2021宁畅新品暨战略发布会现场 宁畅总裁秦晓宁介…

应用系统瓶颈排查和分析的思考-Arthas 实战

简介: 业务应用系统接入流程引擎来处理业务应用的流程执行,流程引擎提供多线程高性能异步化来执行流程元素的执行,但是如何设置流程引擎的线程池线程数执行,以及执行线程数和任务数,应用机器资源使用情况之间的关系如何…

ThreadLocal 工具类 线程隔离 参数传递

package com.mayikt.main.security;import com.mayikt.main.entity.SysUser;/*** 缓存用户数据到ThreadLocal** author gblfy* date 2022-09-12*/ public class UserContextHolder {/*** 定义threadLocal*/private static ThreadLocal<SysUser> threadLocal new ThreadL…

Java 虚拟机诊断利器

背景 最近学习Java字节码过程中遇到了反射&#xff0c;有段代码是这样的&#xff1a; package com.example.classstudy;import java.lang.reflect.Method;/*** author TY*/ public class ReflectionTest {private static int count 0;public static void foo() {new Excepti…

IDC报告:中国公有云服务市场同比增长49.7%,领跑全球

IDC最新发布的《全球及中国公有云服务市场&#xff08;2020年&#xff09;跟踪》报告显示&#xff0c;2020年全球公有云服务整体市场规模&#xff08;IaaS/PaaS/SaaS&#xff09;达到3,124.2亿美元&#xff0c;同比增长24.1%&#xff0c;中国公有云服务整体市场规模达到193.8亿…

是谁在调用我?使用 arthas+jprofiler 做复杂链路分析

简介&#xff1a; Arthas 是阿里巴巴开源的应用诊断利器&#xff0c;提供了 profiler 命令&#xff0c;可以生成热点火焰图。通过采样录制调用链路来做性能分析&#xff0c;极大提升了线上排查性能问题的效率。 作者 | 羽涅 阿里巴巴 CCO 技术部技术专家&#xff0c;承担 CCO …

Arthas 初探--安装初步适用

简介&#xff1a; 由于在项目中遇到一种情况&#xff0c;某段代码在进行单元测试和在 tomcat 容器中运行的性能相差数百倍&#xff0c;因此需要分析在不同环境下某个方法执行的具体时间&#xff0c;从而确定问题。Arthas 可以做到无侵入的监控应用远行情况。 作者 | agmtopy 由…

用 Arthas 神器来诊断 HBase 异常进程

1. 异常突起 HBase 集群的某一个 RegionServer 的 CPU 使用率突然飙升到百分之百&#xff0c;单独重启该 RegionServer 之后&#xff0c;CPU 的负载依旧会逐渐攀上顶峰。多次重启集群之后&#xff0c;CPU 满载的现象依然会复现&#xff0c;且会持续居高不下&#xff0c;慢慢地…

赠书 | 如何部署一个Knative Service

我们以一个go语言编写的程序代码为例&#xff0c;创建一个简单的Web服务&#xff0c;当该服务接收到HTTP GET请求时会根据环境变量TARGET传递的内容向response输出Hello $TATGET! 内容。1. 创建一个文件名为helloworld.go的文件。程序源码如下&#xff1a;package mainimport (…

一文读懂阿里云网络-SLB负载均衡新姿势

简介&#xff1a; 简介&#xff1a;负载均衡是洛神网络中最为关键的网元之一&#xff0c;其担负着网络流量分发的重任&#xff0c;有了它之后&#xff0c;用户在浏览应用的时候才能体会到“丝般顺滑”的感觉。欢迎免费体验SLB性能保障型负载均衡产品&#xff01; 通过此文&…

聊聊缓存机制:双写兜兜转转,又回到了串行化

来源 | moon聊技术责编 | 寇雪芹头图 | 下载于ICphoto什么是双写&#xff1f;这个很好理解&#xff0c;双写就是说&#xff0c;一份数据在数据库存一份&#xff0c;在缓存中也存一份&#xff0c;给缓存一个过期时间&#xff0c;当读不到缓存时从数据库读出来然后写入缓存。为什…

华为OD机试 - 堆内存申请(Java JS Python C)

在线OJ刷题 题目详情 - 堆内存申请 - Hydro 题目描述 有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为:优先紧接着前一块已使用内存,分配空间足够且最接近申请大小的空闲内存。 输入描述 第1行是1个整数,表示期望申请的内存字节数 第2到第N行是用空…

如何基于大数据及AI平台实现业务系统实时化?

简介&#xff1a; 后疫情时代的新社会模式及经济形态必将催生出新的商业模式&#xff0c;在线业务及相关应用场景的流量呈现井喷式发展&#xff0c;常规的离线系统及离线机器学习平台已无法满足业务发展要求。 作者&#xff1a;高旸&#xff08;吾与&#xff09;&#xff0c;阿…

基于 Flink 的典型 ETL 场景实现

简介&#xff1a; 本文将从数仓诞生的背景、数仓架构、离线与实时数仓的对比着手&#xff0c;综述数仓发展演进&#xff0c;然后分享基于 Flink 实现典型 ETL 场景的几个方案。 作者&#xff1a;买蓉 美团点评高级技术专家整理&#xff1a;赵阳&#xff08;Flink 社区志愿者&…