前言
动态SQL 是 Mybatis的亮点功能之一,如果你经历过 拼接SQL 的繁琐痛苦,那么你就能切身感受到动态SQL到底有多爽!真香哈~
另外,Mybatis将动态SQL设计的如此自然,让人看看就能理解和接受,我想这也是Mybaits如此深入人心的原因之一吧,将SQL代码和JAVA代码浑然天成,不得了,真的优雅!
上文我们讲过了if、where、set标签,本文继续!
一、foreach 标签
foreach 就是循环遍历,通常是用于SQL中的 in 语句,例如:
Mapper:
List selectByIdList(@Param("idList") List idList);
Mapper.xml:
例子中,collection指向集合对象,item是本次遍历的对象。
你可以将任何可迭代对象,如 List、Set、Map 或者 数组 作为集合参数传递给 foreach。
非常强大,当使用 Map 对象(或者 Map.Entry 对象的集合)时,index 是键,item 是值。
其它情况,index 是当前迭代的序号,item是本次遍历的对象。
二、choose、when、otherwise 标签
多重条件判断,if 的升级款,和 Java 中的swicth case 类似。在choose标签下,任意when的test成立时执行其内的sql,否则执行otherwise标签内的sql。
Mapper:
// 查询user,通过symbol选择符号
List selectList(@Param("name") String name, @Param("symbol") Integer symbol);
Mapper.xml:
如果有收获,请关注我:天罡gg,一个全网才5万多粉,竟然干了十多年的架构师,后面还有更多干货等着你,加油!