MyBatis 切换不同的类型数据库方案

2024-09-09 04:58

本文主要是介绍MyBatis 切换不同的类型数据库方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

下属案例例当前结合SpringBoot 配置进行讲解。

背景:

实现一个工程里面在部署阶段支持切换不同类型数据库支持。

方案一

数据源配置

关键代码(是什么数据库,该怎么配就怎么配)

spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动url: jdbc:mysql://127.0.0.1:3006/test?useUnicode=true&characterEncoding=UTF8username: rootpassword: *****# 使用druid数据源driver-class-name: com.mysql.jdbc.Driverdruid:# @需要修改校确认查询语句validationQuery: select 'x' from dual

 MyBatis 配置,关键代码【关键点1】:

关键属性:database-id

# 配置数据库
mybatis:mapper-locations: "classpath*:mapper/*.xml"configuration:database-id: mysql  # mysql or oracle

Sql Map 示例 关键代码【关键点2】:

关键属性:databaseId

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.github.wxiaoqi.security.plan.mapper.DataSourceTestMapper"><select id="list" resultType="com.github.wxiaoqi.security.plan.entity.DataSourceTest" databaseId="mysql">select * from data_source_test limit 1
</select>
<select id="list" resultType="com.github.wxiaoqi.security.plan.entity.DataSourceTest" databaseId="oracle">select id,type_ as type from DATA_SOURCE_TEST
</select>
</mapper>

备注:

没有设置databaseId表示:无论当前连接的什么数据库,该条语句都能被使用。但是如上面这种情况,如果使用的mysql数据库则databaseId=mysql 且id为list的语句可以执行,而同时id也是list且没指定的databaseId的语句也可以被执行。这时系统将执行指定更加精确的databaseId=mysql且id为list的语句。

方案二

简单粗暴

 数据配置

还是该怎么配置就怎么配置,这里就不重复了(参考方案一)。

SQL Map 

这里建两个目录,分别是mysql、oracle,分别存放其SQL Map 文件

resources\mapper\mysql
resources\mapper\oracle

图示
图示

 切换关键配置

#配置Mysql数据库map资源路径


mybatis:mapper-locations: "classpath*:mapper/mysql/*.xml"

#配置Oracle数据库map资源路径

mybatis:mapper-locations: "classpath*:mapper/oracle/*.xml"

 

这篇关于MyBatis 切换不同的类型数据库方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150225

相关文章

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)

《JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)》本文介绍了如何在Windows系统上配置多版本JDK(以JDK8和JDK17为例),并通过图文结合的方式给大家讲解了详细步骤,具有... 目录第一步 下载安装JDK第二步 配置环境变量第三步 切换JDK版本并验证可能遇到的问题前提:公司常

MySQL中闪回功能的方案讨论及实现

《MySQL中闪回功能的方案讨论及实现》Oracle有一个闪回(flashback)功能,能够用户恢复误操作的数据,这篇文章主要来和大家讨论一下MySQL中支持闪回功能的方案,有需要的可以了解下... 目录1、 闪回的目标2、 无米无炊一3、 无米无炊二4、 演示5、小结oracle有一个闪回(flashb

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Python如何查看数据的类型

《Python如何查看数据的类型》:本文主要介绍Python如何查看数据的类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python查看数据的类型1. 使用 type()2. 使用 isinstance()3. 检查对象的 __class__ 属性4.

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D