MyBatis的XML定义中静态变量和方法的使用方法

最近一个项目,要用到多个数据库,也有可能同时使用不同的数据库(参考:MyBaits多数据源的设置和切换方法),比如同时使用Oracle和PostgreSQL。

因为有时Oracle和PostgreSQL的SQL是不一样的,我们就需要在XML定义判断当前数据库是Oracle还是PostgreSQL。有些文章里介绍可以使用_databaseId来判断使用什么数据库,但那种情况只能用于使用单数据库的情况,当然也不是说多数据库就不能用,设置起来已经麻烦。直接使用静态变量和方法更简单。

在上一篇文件里写了一个DynamicContextHolder.java的文件,里面的有静态变量,那么我们可以写成这样。

<?xml version="1.0" encoding="UTF-8" ?>

<mapper namespace="net.yutuo.test.epository.TestRepository">
    <select id="selectTestCount" resultType="int">
    <choose>
        <when test="@net.yutuo.test.common.DynamicContextHolder@getDataSourceId() == 'dataSource_0'">
            select count(*) count from test_pg
        </when>
        <otherwise>
            select count(*) count from test_oracle
        </otherwise>
    </choose>
    </select>
</mapper>

One thought on “MyBatis的XML定义中静态变量和方法的使用方法

发表评论

电子邮件地址不会被公开。 必填项已用*标注