Spring Boot MyBatis配置Druid多数据源

发布时间:2026/8/18 13:27:05

Spring Boot MyBatis配置Druid多数据源
一、引入依赖dependencygroupIdcom.oracle/groupIdartifactIdojdbc6/artifactIdversion6.0/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.1.1/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.1.22/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency二、多数据源配置在Spring Boot配置文件application.yml中配置多数据源和Spring Boot JdbcTemplate配置Druid多数据源一致。然后根据application.yml创建两个数据源配置类MysqlDatasourceConfig和OracleDatasourceConfigMysqlDatasourceConfigConfigurationMapperScan(basePackagesMysqlDatasourceConfig.PACKAGE,sqlSessionFactoryRefmysqlSqlSessionFactory)publicclassMysqlDatasourceConfig{// mysqldao扫描路径staticfinalStringPACKAGEcom.wno704.boot.mysqldao;// mybatis mapper扫描路径staticfinalStringMAPPER_LOCATIONclasspath:mapper/mysql/*.xml;PrimaryBean(namemysqldatasource)ConfigurationProperties(spring.datasource.druid.mysql)publicDataSourcemysqlDataSource(){returnDruidDataSourceBuilder.create().build();}Bean(namemysqlTransactionManager)PrimarypublicDataSourceTransactionManagermysqlTransactionManager(){returnnewDataSourceTransactionManager(mysqlDataSource());}Bean(namemysqlSqlSessionFactory)PrimarypublicSqlSessionFactorymysqlSqlSessionFactory(Qualifier(mysqldatasource)DataSourcedataSource)throwsException{finalSqlSessionFactoryBeansessionFactorynewSqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);//如果不使用xml的方式配置mapper则可以省去下面这行mapper location的配置。sessionFactory.setMapperLocations(newPathMatchingResourcePatternResolver().getResources(MysqlDatasourceConfig.MAPPER_LOCATION));returnsessionFactory.getObject();}}上面代码配置了一个名为mysqldatasource的数据源对应application.yml中spring.datasource.druid.mysql前缀配置的数据库。然后创建了一个名为mysqlSqlSessionFactory的Bean并且注入了mysqldatasource。与此同时还分别定了两个扫描路径PACKAGE和MAPPER_LOCATION前者为Mysql数据库对应的mapper接口地址后者为对应的mapper xml文件路径。Primary标志这个Bean如果在多个同类Bean候选时该Bean优先被考虑。多数据源配置的时候必须要有一个主数据源用Primary标志该Bean。同理接着配置Oracle数据库对应的配置类OracleDatasourceConfigConfigurationMapperScan(basePackagesOracleDatasourceConfig.PACKAGE,sqlSessionFactoryReforacleSqlSessionFactory)publicclassOracleDatasourceConfig{// oracledao扫描路径staticfinalStringPACKAGEcom.wno704.boot.oracledao;// mybatis mapper扫描路径staticfinalStringMAPPER_LOCATIONclasspath:mapper/oracle/*.xml;Bean(nameoracledatasource)ConfigurationProperties(spring.datasource.druid.oracle)publicDataSourceoracleDataSource(){returnDruidDataSourceBuilder.create().build();}Bean(nameoracleTransactionManager)publicDataSourceTransactionManageroracleTransactionManager(){returnnewDataSourceTransactionManager(oracleDataSource());}Bean(nameoracleSqlSessionFactory)publicSqlSessionFactoryoracleSqlSessionFactory(Qualifier(oracledatasource)DataSourcedataSource)throwsException{finalSqlSessionFactoryBeansessionFactorynewSqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);//如果不使用xml的方式配置mapper则可以省去下面这行mapper location的配置。sessionFactory.setMapperLocations(newPathMatchingResourcePatternResolver().getResources(OracleDatasourceConfig.MAPPER_LOCATION));returnsessionFactory.getObject();}}具体的application.yml配置如下spring:datasource:druid:# 数据库访问配置, 使用druid数据源mysql:type:com.alibaba.druid.pool.DruidDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://127.0.0.1:3306/springboot?useUnicodetruecharacterEncodingutf8serverTimezoneUTCallowMultiQueriestrueuseSSLfalseusername:springpassword:spring#123oracle:type:com.alibaba.druid.pool.DruidDataSourcedriver-class-name:oracle.jdbc.driver.OracleDriverurl:jdbc:oracle:thin:125.72.228.21:1521:testdbusername:wno704password:wno704db312# 连接池配置initial-size:5min-idle:5max-active:20# 连接等待超时时间max-wait:30000# 配置检测可以关闭的空闲连接间隔时间time-between-eviction-runs-millis:60000# 配置连接在池中的最小生存时间min-evictable-idle-time-millis:300000validation-query:select 1 from dualtest-while-idle:truetest-on-borrow:falsetest-on-return:false# 打开PSCache并且指定每个连接上PSCache的大小pool-prepared-statements:truemax-open-prepared-statements:20max-pool-prepared-statement-per-connection-size:20# 配置监控统计拦截的filters, 去掉后监控界面sql无法统计, wall用于防火墙filters:stat,wall# Spring监控AOP切入点如x.y.z.service.*,配置多个英文逗号分隔aop-patterns:com.springboot.service.*# WebStatFilter配置web-stat-filter:enabled:true# 添加过滤规则url-pattern:/*# 忽略过滤的格式exclusions:*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*# StatViewServlet配置stat-view-servlet:enabled:true# 访问路径为/druid时跳转到StatViewServleturl-pattern:/druid/*# 是否能够重置数据reset-enable:false# 需要账号密码才能访问控制台login-username:druidlogin-password:druid123# IP白名单# allow: 127.0.0.1# IP黑名单共同存在时deny优先于allow# deny: 192.168.1.218# 配置StatFilterfilter:stat:log-slow-sql:true脚本导入myslq脚本参考《Spring-Boot整合MyBatis》oracle脚本导入CREATETABLEWNO704.STUDENT(SNONUMBERNOTNULL,SNAMENVARCHAR2(50),SSEXNVARCHAR2(2),CONSTRAINTPK_STUDENT_SNOPRIMARYKEY(SNO))tablespaceWNO704 PCTFREE10initrans1maxtrans255storage(INITIAL768Knext8K minextents1MAXEXTENTS unlimited t8K minextents1MAXEXTENTS unlimited);COMMENTONCOLUMNWNO704.STUDENT.SNOIS学号;COMMENTONCOLUMNWNO704.STUDENT.SNAMEIS姓名;COMMENTONCOLUMNWNO704.STUDENT.SSEXIS性别;INSERTINTOSTUDENTVALUES(1,KangKang,M);INSERTINTOSTUDENTVALUES(2,Mike,M);INSERTINTOSTUDENTVALUES(3,Jane,F);三、编码配置完多数据源接下来分别在com.springboot.mysqldao路径和com.springboot.oracledao路径下创建两个mapper接口MysqlStudentMapperMapperRepository(mysqlStudentMapper)publicinterfaceMysqlStudentMapper{ListMapString,ObjectgetAllStudents();}OracleStudentMapperMapperRepository(oracleStudentMapper)publicinterfaceOracleStudentMapper{ListMapString,ObjectgetAllStudents();}接着创建mapper接口对应的实现在src/main/resource/mapper/mysql/路径下创建MysqlStudentMapper.xml?xml version1.0 encodingUTF-8 ?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecom.wno704.boot.mysqldao.MysqlStudentMapperselectidgetAllStudentsresultTypejava.util.Mapselect * from student/select/mapper在src/main/resource/mapper/oracle/路径下创建OracleStudentMapper.xml?xml version1.0 encodingUTF-8 ?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecom.wno704.boot.oracledao.OracleStudentMapperselectidgetAllStudentsresultTypejava.util.Mapselect * from student/select/mapper编写StudentServicepublicinterfaceStudentService{ListMapString,ObjectgetAllStudentsWithMysql();ListMapString,ObjectgetAllStudentsWithOracle();}编写实现类StudentServiceImplService(studentService)publicclassStudentServiceImplimplementsStudentService{AutowiredprivateMysqlStudentMappermysqlStudentMapper;AutowiredprivateOracleStudentMapperoracleStudentMapper;OverridepublicListMapString,ObjectgetAllStudentsWithMysql(){returnthis.mysqlStudentMapper.getAllStudents();}OverridepublicListMapString,ObjectgetAllStudentsWithOracle(){returnthis.oracleStudentMapper.getAllStudents();}}四、测试编写controller测试RestControllerpublicclassTestController{AutowiredprivateStudentServicestudentService;RequestMapping(value/getAllStudentsWithMysql,methodRequestMethod.GET)publicListMapString,ObjectgetAllStudentsWithMysql(){returnthis.studentService.getAllStudentsWithMysql();}RequestMapping(value/getAllStudentsWithOracle,methodRequestMethod.GET)publicListMapString,ObjectgetAllStudentsWithOracle(){returnthis.studentService.getAllStudentsWithOracle();}}最终项目目录如下图所示启动项目访问http://localhost:8080/getAllStudentsWithMysqlhttp://localhost:8080/getAllStudentsWithOracle

相关新闻

加密音乐文件打不开?一文说清 Unlock Music 免费解锁方法

加密音乐文件打不开?一文说清 Unlock Music 免费解锁方法

2026/8/18 13:17:04

加密音乐文件打不开?一文说清 Unlock Music 免费解锁方法 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: ht…

Qt新手入门指南 - 如何创建模型/视图(三)

Qt新手入门指南 - 如何创建模型/视图(三)

2026/8/18 13:17:04

每个UI开发人员都应该了解ModelView编程,本教程的目标是为大家提供一个简单易懂的介绍。 Qt是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今&#xff…

DDrawCompat 实战速成:三步让 DirectX 1-7 老游戏在新系统上满血复活

DDrawCompat 实战速成:三步让 DirectX 1-7 老游戏在新系统上满血复活

2026/8/18 13:17:04

DDrawCompat 实战速成:三步让 DirectX 1-7 老游戏在新系统上满血复活 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mir…

HFS 文件服务器从零到上手:手把手搭建个人 HTTP 文件共享服务器

HFS 文件服务器从零到上手:手把手搭建个人 HTTP 文件共享服务器

2026/8/18 14:27:07

HFS 文件服务器从零到上手:手把手搭建个人 HTTP 文件共享服务器 【免费下载链接】hfs HFS is a web file server for your computer. Share folders or even a single file thanks to the virtual file system. 项目地址: https://gitcode.com/gh_mirrors/hf/hfs …

原神私服一键搭建:把提瓦特装进本地电脑,按下按钮就能玩

原神私服一键搭建:把提瓦特装进本地电脑,按下按钮就能玩

2026/8/18 14:27:07

原神私服一键搭建:把提瓦特装进本地电脑,按下按钮就能玩 【免费下载链接】KCN-GenshinServer 基于GC制作的原神一键GUI多功能服务端。 项目地址: https://gitcode.com/gh_mirrors/kc/KCN-GenshinServer 凌晨一点,程序员小林刚写完一版…

springboot大学生体检档案管理系统---附源码39769

springboot大学生体检档案管理系统---附源码39769

2026/8/18 14:27:07

源码获取 私信联系我即可~ 大家点赞、收藏、关注、评论啦 精彩专栏推荐订阅:在下方专栏👇🏻 👇🏻 精彩专栏 推荐订阅👇🏻 Java精品项目案例【2000套】 Java精品项目案例【2000套】https://blog…

gOSINT邮箱泄露查询教程:如何用HIBP模块检查数据泄露与关联密码

gOSINT邮箱泄露查询教程:如何用HIBP模块检查数据泄露与关联密码

2026/8/18 14:27:07

gOSINT邮箱泄露查询教程:如何用HIBP模块检查数据泄露与关联密码 【免费下载链接】gOSINT OSINT Swiss Army Knife 项目地址: https://gitcode.com/gh_mirrors/go/gOSINT 你的邮箱是否出现在某次数据泄露事件中?与之绑定的密码是否早已被公开&…

怎么在电脑连接公司打印机设备

怎么在电脑连接公司打印机设备

2026/8/18 14:27:07

1.键盘同时按住winR,在弹出窗口输入control,打开任务管理器2.点击“查看设备和打印机”3.点击“手动添加设备”4.选择“使用IP地址或主机名添加打印机”5.在设备类型中选择“TCP/IP设备”6.输入打印机的IP地址(可以在打印机上查看&#xff09…

定制化数据后处理软件,能为企业省下多少钱?一笔详细的经营账

定制化数据后处理软件,能为企业省下多少钱?一笔详细的经营账

2026/8/18 14:17:07

测试明明做完了,真正磨人的阶段才刚刚开始。海量原始数据复制粘贴、公式校对、格式转换、图表排版、报告生成……测试工程师宝贵的时间,全耗在了重复劳动里。或许你也想过直接采购一套数据分析软件,但一看功能列表和报价就犹豫了——通用功能…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/17 1:28:42

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/18 1:03:22

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/17 8:40:51

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

多智能体大模型辩论中的立场收敛:从伪共识到理性说服的评估方法

多智能体大模型辩论中的立场收敛:从伪共识到理性说服的评估方法

2026/8/18 0:06:29

1. 从一场“假辩论”说起:为什么大模型辩论会走向“伪共识”?最近在折腾多智能体大语言模型(Multi-Agent LLM)的辩论实验,发现一个挺有意思的现象。我让几个基于GPT-4的智能体就一个争议性话题(比如“远程办…

Frida动态代码插桩框架:从原理到实战的移动安全与逆向工程指南

Frida动态代码插桩框架:从原理到实战的移动安全与逆向工程指南

2026/8/18 0:06:29

1. 从“黑盒”到“白盒”:为什么我们需要Frida在移动安全、逆向工程甚至是一些自动化测试的场景里,我们经常会遇到一个让人头疼的问题:面对一个编译好的、没有源代码的应用程序,我们如何知道它在运行时内部发生了什么?…

ECharts饼图中心文字配置指南:从label与title区别到动态交互实现

ECharts饼图中心文字配置指南:从label与title区别到动态交互实现

2026/8/18 0:06:29

1. 从“空心”到“有魂”:为什么要在饼图中间加文字?如果你用过ECharts画饼图,大概率会注意到一个现象:默认生成的饼图中间是空心的。这个设计本身没问题,它清晰地展示了各个扇区的占比关系。但在很多实际的业务场景里…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…