MyBatis-DatabaseIdProvider使用

在做项目中要求一个项目支持Oracle和Pg两种数据库,使用DatabaseIDProvider搭配xml可以实现此功能

DatabaseIdProvider元素主要是为了支持不同厂商的数据库,看一下在Springboot项目中的配置方式:
新建DataBaseCon配置类,加入下面代码

    @Bean   //自动生成实体类对象
    public DatabaseIdProvider databaseIdProvider() {
        DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
        Properties p = new Properties();
        p.setProperty("Oracle", "oracle");
        p.setProperty("MySQL", "mysql");
        p.setProperty("PostgreSQL", "postgresql");
        p.setProperty("DB2", "db2");
        p.setProperty("SQL Server", "sqlserver");
        databaseIdProvider.setProperties(p);
        return databaseIdProvider;
    }

通过别名我们可以在SQL语句中标识适用于哪种数据库运行。如果不知道数据库名称,我们可以通过以下代码获取:

/**
     * 获取数据库名称
     */
    public static void getDbInformation() {
        SqlSession sqlSession = null;
        Connection connection = null;
        try {
            sqlSession = getSqlSession();
            connection = sqlSession.getConnection();
            String dbName = connection.getMetaData().getDatabaseProductName();
            System.out.println("数据库名称是:" + dbName + ");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

下面我们就可以在自己的sql语句中使用属性databaseId来标示数据库类型了。如下:

    <select id="selectTaskid" resultType="int">
        <if test="_databaseId == 'oracle'">
            select seq_task_monitor.nextval from dual
        </if>
        <if test="_databaseId == 'postgresql'">
            select nextval('SEQ_TASK_MONITOR')+1
        </if>

    </select>

上述代码就完成了项目中更具不同数据库环境切换sql语句

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值