当前位置: 首页 > news >正文

SpringBoot整合mybatis多数据源

 废话不多说先上结果

 对应数据库

 

 首先导入所需的mybatis、mysql和lombok依赖

        <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

配置文件 (两个数据库不一样)

配置 数据库连接类

@Configuration
//basePackages:接口文件的包路径
@MapperScan(basePackages = "com.example.mapper", sqlSessionFactoryRef = "PrimarySqlSessionFactory")
public class PrimaryDataSourceConfig {@Bean(name = "PrimaryDataSource")// 表示这个数据源是默认数据源@Primary//这个一定要加,如果两个数据源都没有@Primary会报错@ConfigurationProperties(prefix = "spring.datasource.primary")//配置文件中的前缀public DataSource getPrimaryDateSource() {return DataSourceBuilder.create().build();}@Bean(name = "PrimarySqlSessionFactory")@Primarypublic SqlSessionFactory primarySqlSessionFactory(@Qualifier("PrimaryDataSource") DataSource datasource)throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(datasource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapping/one/*.xml"));return bean.getObject();// 设置mybatis的xml所在位置}@Bean("PrimarySqlSessionTemplate")// 表示这个数据源是默认数据源@Primarypublic SqlSessionTemplate primarySqlSessionTemplate(@Qualifier("PrimarySqlSessionFactory") SqlSessionFactory sessionfactory) {return new SqlSessionTemplate(sessionfactory);}}
@Configuration
@MapperScan(basePackages = "com.example.mapper2", sqlSessionFactoryRef = "SecondarySqlSessionFactory")
public class SecondaryDataSourceConfig {@Bean(name = "SecondaryDataSource")@ConfigurationProperties(prefix = "spring.datasource.secondary")public DataSource getSecondaryDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "SecondarySqlSessionFactory")public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("SecondaryDataSource") DataSource datasource)throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(datasource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapping/two/*.xml"));return bean.getObject();// 设置mybatis的xml所在位置}@Bean("SecondarySqlSessionTemplate")public SqlSessionTemplate secondarySqlSessionTemplate(@Qualifier("SecondarySqlSessionFactory") SqlSessionFactory sessionfactory) {return new SqlSessionTemplate(sessionfactory);}
}

 实体类(这里写的非常简单)

mapper文件(主要不同的数据库,mapper也要由区分,例如上文配置 数据库连接类中俩个包名并不相同) 

对应的mapper.xml文件

Service层 

 ServiceImpl类

@Service
public class UserServiceImpl implements UserService {@Autowiredprivate PrimaryUserMapper primaryUserMapper;@Autowiredprivate SecondaryUserMapper secondaryUserMapper;@Overridepublic List<User> findAll1() {return primaryUserMapper.findAll();}@Overridepublic List<User> findAll2() {return secondaryUserMapper.findAll();}
}

最后测试是否连接成功

相关文章:

SpringBoot整合mybatis多数据源

废话不多说先上结果 对应数据库 首先导入所需的mybatis、mysql和lombok依赖 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependen…...

垃圾收集器与内存分配策略

内存分配和回收原则 对象优先在Eden区分配 大对象直接进入老年代 长期存活的对象进入老年代 什么是内存泄漏 不再使用的对象在系统中未被回收&#xff0c;内存泄漏的积累可能会导致内存溢出 自动垃圾回收与手动垃圾回收 自动垃圾回收&#xff1a;由虚拟机来自动回收对象…...

Python计算三角形的面积

Python 计算三角形的面积 以下实例为通过用户输入三角形三边长度&#xff0c;并计算三角形的面积&#xff1a; # 三角形第一边长 a 3 # 三角形第二边长 b 4 c float( input("输入三角形第三边长: ") ) # 计算半周长 s (a b c) / 2 # 计算…...

198.【2023年华为OD机试真题(C卷)】万能字符单词拼写(JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-万能字符单词拼写二.解题思路三.题解代码Pytho…...

Tomcat服务为什么起不来?

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 服务跑在Tomcat下面&#xff0c;有时候会遇到Tomcat起不来的情况。目前为止常遇到的情况有如下几种&#xff1a; 1. Tomcat服务…...

计算机网络 VLAN

路由器将多个局域网连接起来&#xff0c;而交换机将一个局域网里的设备连接起来。 路由器的端口分配局域网的网段&#xff08;子网网段&#xff09;&#xff0c;局域网的内部设备的ip都在这个网段里&#xff0c;再由交换机将数据派发到目的设备&#xff0c;交换机是按照MAC地址…...

docker搭建Dinky —— 筑梦之路

简介 Dinky 是一个 开箱即用 、易扩展 &#xff0c;以 Apache Flink 为基础&#xff0c;连接 OLAP 和 数据湖 等众多框架的 一站式 实时计算平台&#xff0c;致力于 流批一体 和 湖仓一体 的探索与实践。 主要功能 其主要功能如下&#xff1a; 沉浸式 FlinkSQL 数据开发&#x…...

Python基础(十四、数据容器之集合Set)

文章目录 一、集合语法二、集合的基本操作添加元素删除元素随机删除元素&#xff0c;可获得删除的值清空取出2个集合的差集消除2个集合的差集合并2个集合集合元素个数查询元素是否存在 遍历集合集合的遍历 什么是数据容器&#xff1f; 数据容器是Python中用于存储和操作数据的对…...

OpenHarmony之HDF驱动框架

概述 HDF&#xff08;Hardware Driver Foundation&#xff09;驱动框架&#xff0c;为驱动开发者提供驱动框架能力&#xff0c;包括驱动加载、驱动服务管理、驱动消息机制和配置管理。并以组件化驱动模型作为核心设计思路&#xff0c;让驱动开发和部署更加规范&#xff0c;旨在…...

深入浅出理解TensorFlow的padding填充算法

一、参考资料 notes_on_padding_2 二、TensorFlow的padding算法 本文以TensorFlow v2.14.0版本为例&#xff0c;介绍TensorFlow的padding算法。 tf.nn.conv2d # https://github.com/tensorflow/tensorflow/blob/v2.14.0/tensorflow/python/ops/nn_ops.py#L2257-L2361paddi…...

TDD-LTE 附着流程和去附着流程

目录 1. 附着流程 1.1. 正常附着流程 2. 异常附着流程 2.1 RRC建立失败 2.2 核心网拒绝 2.3 eNodeB未收到初始化上下文建立请求 2.4 RRC重配置请求丢失 2. 去附着流程 2.1 非关机去附着流程 2.1.1 连接态非关机去附着 2.1.2 空闲态非关机去附着 2.2 关机去附着流程 …...

[Angular] 笔记 23:Renderer2 - ElementRef 的生产版本

chatgpt: Renderer2 简介 在 Angular 中&#xff0c;Renderer2 是一个服务&#xff0c;用于处理 DOM 操作的抽象层。它提供了一种安全的方式来操作 DOM&#xff0c;同时与平台无关&#xff0c;有助于维护应用程序的跨浏览器兼容性和安全性。 Renderer2 的作用是在 Angular 组…...

WEB:探索开源OFD.js技术应用

1、简述 OFD.js 是一个由开源社区维护的 JavaScript 库&#xff0c;专注于在浏览器中渲染和处理 OFD 文件。OFD 作为一种开放式的文档格式&#xff0c;被广泛应用于电子政务、电子合同等领域。OFD.js 的出现为开发者提供了一个强大的工具&#xff0c;使得在前端实现 OFD 文件的…...

平方根,又叫二次方根,表示为〔√ ̄〕

正在加载中... 平方根&#xff0c;又叫二次方根&#xff0c;表示为〔√&#xffe3;〕&#xff0c;如&#xff1a; 平方根&#xff0c;又叫二次方根&#xff0c;表示为〔√&#xffe3;〕&#xff0c;如&#xff1a;数学语言为&#xff1a;√&#xffe3;164。语言描述为&…...

Springer Latex正文参考文献样式改为数字

用过爱斯唯尔的latex&#xff0c;正文参考文献都是数字&#xff0c;第一次用Springer Latex的参考文献竟然是authoryear&#xff0c;如下&#xff1a; 将这种样式变回序号样式&#xff1a; &#xff08;1&#xff09;使用这个documentclass&#xff08;此为双栏&#xff09; …...

六、typescript泛型使用

1.identity函数&#xff0c;这个函数会返回任何传入它的值&#xff0c;可以看作是echo命令 function identity(arg:number):number {return arg }或 使用any类型会导致这个函数可以接收任何类型的参数&#xff0c;这样会丢失一些信息&#xff0c;传入与返回类型应该是相同的 有…...

【快慢指针】26.删除有序数组中的重复项

题目 法1&#xff1a;快慢指针 基础解法&#xff0c;必须掌握&#xff01;&#xff01;&#xff01; class Solution {public int removeDuplicates(int[] nums) {if (nums.length < 2) {return nums.length;}int slow 0, fast 1;while (fast < nums.length) {if (n…...

爬虫工作量由小到大的思维转变---<第三十一章 Scrapy Redis 初启动/conn说明书)>

前言: 重点在读connection.py的源码,这个组件主要是用来连接的; 因为连接都无法做到,后面想更改点自定义就白扯了; 正文: 翻译版的connection.py源码: import sys import six from scrapy.utils.misc import load_object from . import defaults# 快捷方式映射 设置名称 -&…...

2023年山东省职业院校技能大赛高职组“软件测试”赛项-单元测试报告答案

任务四 单元测试 目录 任务四 单元测试 题目1: 题目2: 题目3:<...

Matlab论文插图绘制模板第133期—函数极坐标折线图

在之前的文章中&#xff0c;分享了Matlab函数折线图的绘制模板&#xff1a; 函数三维折线图&#xff1a; 函数网格曲面图&#xff1a; 函数曲面图&#xff1a; 函数等高线图&#xff1a; 函数等高线填充图&#xff1a; 进一步&#xff0c;再来分享一下函数极坐标折线图。 先来…...

计网实验一

课程实验报告专 业&#xff1a;物联网工程 班 级&#xff1a;2303学 号&#xff1a;231040700302 姓 名&#xff1a;杜子健实验名称&#xff1a;实验一实验类型&#xff1a;实验实验日期&#xff1a;2025年11月12日一 实…...

【光栅和蛇形误差扩散半色调】基于Floyd-Steinberg算法进行误差扩散半色调研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

TypeScript领域建模实战:基于斯坦福本体论七步法构建健壮数据模型

1. 项目概述如果你和我一样&#xff0c;在TypeScript项目里摸爬滚打了几年&#xff0c;肯定遇到过这样的场景&#xff1a;面对一个全新的业务领域&#xff0c;老板让你“设计一下数据模型”&#xff0c;你打开一个空白的types.ts文件&#xff0c;光标闪烁&#xff0c;大脑一片空…...

ARM NEON指令集VLD1加载操作原理与优化实践

1. ARM SIMD指令集与VLD1加载操作概述在现代处理器架构中&#xff0c;SIMD&#xff08;Single Instruction Multiple Data&#xff09;技术已成为提升计算性能的关键手段。作为ARM架构中Advanced SIMD指令集&#xff08;俗称NEON&#xff09;的重要组成部分&#xff0c;VLD1系列…...

终极指南:boardgame.io v0.50重大更新,打造更强大的回合制游戏框架

终极指南&#xff1a;boardgame.io v0.50重大更新&#xff0c;打造更强大的回合制游戏框架 【免费下载链接】boardgame.io State Management and Multiplayer Networking for Turn-Based Games 项目地址: https://gitcode.com/gh_mirrors/bo/boardgame.io boardgame.io是…...

Timoni高级功能揭秘:类型验证、签名和OCI分发

Timoni高级功能揭秘&#xff1a;类型验证、签名和OCI分发 【免费下载链接】timoni Timoni is a package manager for Kubernetes, powered by CUE and inspired by Helm. 项目地址: https://gitcode.com/gh_mirrors/ti/timoni Timoni是一个基于CUE的Kubernetes包管理器&…...

FPGA电源系统设计与线性/开关稳压器应用指南

1. FPGA电源系统设计基础在数字系统设计中&#xff0c;FPGA因其可编程性和高性能已成为现代电子系统的核心器件。随着工艺技术进步&#xff0c;当代FPGA集成了数百万逻辑门、高速收发器、锁相环和专用处理单元&#xff0c;这些复杂模块对供电系统提出了严苛要求。一个典型的Xil…...

2026年,想找A研发公司?这些关键选择要点你不可不知!

在科技飞速发展的2026年&#xff0c;AI技术已经广泛应用于各个领域&#xff0c;众多企业都希望借助AI研发公司的力量来提升自身竞争力。然而&#xff0c;面对市场上众多的AI研发公司&#xff0c;如何做出正确的选择成为了一大难题。下面就为大家介绍一些选择AI研发公司的关键要…...

Qt WebEngine实战避坑:证书管理、代理设置与高DPI适配那些事儿

Qt WebEngine实战避坑指南&#xff1a;证书管理、代理配置与高DPI适配深度解析 在跨平台桌面应用开发领域&#xff0c;Qt WebEngine作为Chromium引擎的封装实现&#xff0c;为开发者提供了强大的Web内容嵌入能力。然而在实际项目落地过程中&#xff0c;开发者常会遇到三类典型问…...

别再为地址映射头疼了!台达DVP50MC11T与西门子/欧姆龙PLC的Modbus通信差异对比

台达DVP50MC11T与主流PLC的Modbus通信地址映射实战解析 在工业自动化项目中&#xff0c;Modbus通信协议因其简单可靠的特点被广泛应用。但对于熟悉西门子或欧姆龙PLC的工程师来说&#xff0c;初次接触台达DVP50MC11T系列时&#xff0c;往往会对其特殊的地址映射方式感到困惑。…...