mybatis编写xml时,怎么根据变量值,执行不同的sql语句?
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数据库和达梦数据库,但是两者的语句在某些场景下不同。
回答:
mybatis的xml不是可以传参的吗?那就在调用这个SQL的时候往里传就好了呀(假设是用map传参):
<select id="selectOne" parameterType="map" resultType="YourResultType"> SELECT * FROM your_table
<if test="databaseType == '1'">
WHERE condition_for_mysql
</if>
<if test="databaseType == '2'">
WHERE condition_for_达梦
</if>
</select>
回答:
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
以上是 mybatis编写xml时,怎么根据变量值,执行不同的sql语句? 的全部内容, 来源链接: utcz.com/p/945526.html