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

回到顶部