Mybatis 兼容多种数据库(利用databaseId)

数据库:达梦,Mysql

PS:当前方法仅支持静态切换(每次切换需要重启服务)

增加配置类配置不同数据库databaseId标识

@Configuration
public class BeanConfig {

    @Bean
    public DatabaseIdProvider getDatabaseIdProvider() {
        DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
        Properties p = new Properties();
        //厂商标识对应databaseId
        p.setProperty("DM DBMS", "dm");
        p.setProperty("MySQL", "mysql");
        databaseIdProvider.setProperties(p);
        return databaseIdProvider;
    }
}

mapper.xml内写法

指定连mysql时执行的SQL

    <select id="test" databaseId="mysql" resultType="java.lang.Integer">
         select 1
    </select>

指定连达梦数据库时执行的SQL

    <select id="test" databaseId="dm" resultType="java.lang.Integer">
         select 1
    </select>

databaseId配置说明

mybatis在进行mapper注入时,会出现3种情况
 1.该sql的databaseId和当前数据源的databaseId一样。
 2.该sql的databaseId和当前数据源的databaseId不一样。
 3.该sql没有配置databaseId

 当同一方法被找到多个sql时,会优先使用databaseId相同的sql
 如果没有databaseId相同的sql,再使用没有配置databaseId的sql
 databaseId不对应的sql是不会被使用

厂商标识查看方法

数据库driver包DatabaseMetaData类中找到getDatabaseProductName方法即可查看厂商标识

例如mysql

达梦

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
MyBatis 支持多种数据库,只需要在配置文件或 Java 代码中修改相应的数据源配置即可。以下是一些常用数据库的配置示例: 1. MySQL 数据库MyBatis 中,连接 MySQL 数据库的驱动名称为 com.mysql.jdbc.Driver,连接字符串格式为 jdbc:mysql://localhost:3306/test,其中 localhost 表示数据库服务器地址,3306 表示数据库端口,test 表示数据库名称。用户名和密码是连接数据库时使用的凭据。 示例配置文件: ``` <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> ``` 2. Oracle 数据库MyBatis 中,连接 Oracle 数据库的驱动名称为 oracle.jdbc.driver.OracleDriver,连接字符串格式为 jdbc:oracle:thin:@localhost:1521:test,其中 localhost 表示数据库服务器地址,1521 表示数据库端口,test 表示数据库名称。用户名和密码是连接数据库时使用的凭据。 示例配置文件: ``` <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:test"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> ``` 3. SQL Server 数据库MyBatis 中,连接 SQL Server 数据库的驱动名称为 com.microsoft.sqlserver.jdbc.SQLServerDriver,连接字符串格式为 jdbc:sqlserver://localhost:1433;databaseName=test,其中 localhost 表示数据库服务器地址,1433 表示数据库端口,test 表示数据库名称。用户名和密码是连接数据库时使用的凭据。 示例配置文件: ``` <dataSource type="POOLED"> <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/> <property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=test"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> ``` 需要注意的是,在使用不同数据库时,不同的数据库有不同的驱动名称、连接字符串、端口号等配置信息,需要根据实际情况进行配置。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值