LOGO
Yutuo

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

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

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

XML
<?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="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>

转载请注明:宇托的狗窝 » MyBatis的XML定义中静态变量和方法的使用方法

上一篇 下一篇
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 文章不错非常喜欢
    头条新闻2018-06-30 03:39:34回复