本文主要是介绍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 切换不同的类型数据库方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!