Mybatis同时支持多种数据库(oracle 和MySQL)

这里说下对多种数据库的支持,不是多个数据源。

这里要用到mybatis的databaseId。如下:

    <select id="isExist" resultType="Boolean" databaseId="mysql">
        SELECT EXISTS(SELECT 1 FROM `${db}`.test_table WHERE table_id=#{tableId} LIMIT 1)
    </select>

    <select id="isExist" resultType="Boolean" databaseId="oracle">
        SELECT COUNT(*) FROM ${db}."test_table " WHERE "table_id"=#{tableId}
    </select>

在mapper.xml中加上databaseId就可以指定要用的sql,mybatis会根据链接过来的DataSource自动识别。

我这里使用的是spring boot,加上一个bean的配置:

    /**
     * 自动识别使用的数据库类型
     * 在mapper.xml中databaseId的值就是跟这里对应,
     * 如果没有databaseId选择则说明该sql适用所有数据库
     * */
    @Bean
    public DatabaseIdProvider getDatabaseIdProvider(){
        DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
        Properties properties = new Properties();
        properties.setProperty("Oracle","oracle");
        properties.setProperty("MySQL","mysql");
        properties.setProperty("DB2","db2");
        properties.setProperty("Derby","derby");
        properties.setProperty("H2","h2");
        properties.setProperty("HSQL","hsql");
        properties.setProperty("Informix","informix");
        properties.setProperty("MS-SQL","ms-sql");
        properties.setProperty("PostgreSQL","postgresql");
        properties.setProperty("Sybase","sybase");
        properties.setProperty("Hana","hana");
        databaseIdProvider.setProperties(properties);
        return databaseIdProvider;
    }

我这里列出了所有支持的数据库类型,实际使用的时候根据自己要用的数据库添加就好。

在配置文件中正常配置数据库信息就可以了。

如果使用的时候有问题,在配置文件中加上下边配置

database:
  type: oracle

#mybatis设置
mybatis:
  mapper-locations: classpath*:mapper/*.xml
  configuration:
    database-id: ${database.type}
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

主要是database-id这个。

  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
Mybatis项目数据库Oracle切换到MySQL需要注意以下几个方面: 1. 数据库驱动的切换:OracleMySQL数据库驱动是不同的,需要将原来的Oracle数据库驱动替换成MySQL数据库驱动。 2. 数据类型的区别:OracleMySQL的数据类型是不同的,需要进行数据类型的转换。例如,Oracle中的LONG类型需要转换成MySQL中的TEXT类型或BLOB类型。 3. 分页方式的变化:OracleMySQL的分页方式不同,需要修改SQL语句中的分页方式。例如,Oracle中使用ROWNUM进行分页,而MySQL使用LIMIT进行分页。 4. SQL语句的差异:OracleMySQL的SQL语句也有一些差异,需要根据不同的数据库进行修改。例如,Oracle中使用“+”进行字符串拼接,而MySQL使用“||”进行字符串拼接。 5. 数据库方言的选择:Mybatis支持多种数据库,可以根据不同的数据库选择相应的方言进行配置。需要注意的是,不同的方言支持的功能也有所不同。 6. 数据库连接的配置:需要修改Mybatis数据库连接配置,包括数据库的URL、用户名、密码等信息。 7. 数据库的兼容性:在进行数据库切换时,需要考虑原有的数据库设计是否与MySQL兼容。例如,Oracle中的SEQUENCE在MySQL中没有对应的功能,需要进行相应的调整。 总之,将Mybatis项目数据库Oracle切换到MySQL需要进行多方面的调整和修改,需要谨慎处理,避免影响项目的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值