在动态映射的where部分.有如下嵌套的动态条件
1、如果 a,b,c都不为空的情况下
where a = 1 and ( b=2 or c= 3)
2、如果 a为空,b,c不为空
where b=2 or c= 3
3、如果b,c其中一个为空
where a = 1 and b=2
解决方案如下:
where 1=1
<dynamic prepend="and" open="(" close=")">
<isNotEmpty prepend="and" property="a">
a = #a#
</isNotEmpty>
<isNotEmpty prepend="or" property="b" removeFirstPrepend="true">
b = #b#
</isNotEmpty>
<isNotEmpty prepend="or" property="c" removeFirstPrepend="true">
c = #c#
</isNotEmpty>
</dynamic>
以上代码经本人测试通过!
本文介绍了一种使用MyBatis实现复杂动态SQL的方法,通过具体的代码示例展示了如何根据参数的不同组合来构建灵活的WHERE子句。适用于需要根据多个条件动态生成SQL查询的应用场景。
1666

被折叠的 条评论
为什么被折叠?



