mybatis编写xml时,怎么根据变量值,执行不同的sql语句?

作者站长头像
站长
· 阅读数 24

mybatis编写xml时,怎么根据读取配置文件/内存对象的变量,执行动态的sql语句?

比如有一个全局配置类:

public class GlobalVariable {
    public int databaseType; //数据库类型,1mysql,2达梦
}

然后xml文件实现类似下面的判断效果:

...

<select id="selectOne">
    <if test="databaseType='1'">
        ...
    </if>
    <if test="databaseType='2'">
        ...
    </if>
</select>

...

该需求主要要程序需要兼容mysql数据库和达梦数据库,但是两者的语句在某些场景下不同。

回复
1个回答
avatar
test
2024-06-21

mybatis 有自带的数据库厂商标识(databaseIdProvider)https://mybatis.net.cn/configuration.html#databaseIdProvider

<select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="mysql">
     select * from multil
</select>
<select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="oracle">
       select id from multil
</select>

https://blog.csdn.net/zhaizhisheng/article/details/105834300

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容