Mybatis 的映射文件中,前面我们的 SQL 都是比较简单的,有些时候业务逻辑复杂时,我们的 SQL是动态变化的,此时在前面的学习中我们的 SQL 就不能满足要求了。
例如:

我们根据实体类的不同取值,使用不同的 SQL语句来进行查询。比如在 id如果不为空时可以根据id查询,如果username 不同空时还要加入用户名作为条件。这种情况在我们的多条件组合查询中经常会碰到。
如下图:
改造:
当查询条件id和username都存在时,控制台打印的sql语句如下:
当查询条件只有id存在时,控制台打印的sql语句如下:
总结语法:
循环执行sql的拼接操作,例如:SELECT * FROM student WHERE id IN (1,2,5)。
测试代码片段如下:
属性
collection:参数容器类型, (list-集合, array-数组)。
open:开始的 SQL 语句。
close:结束的 SQL 语句。
item:参数变量名。
separator:分隔符。
Sql 中可将重复的 sql 提取出来,使用时用 include 引用即可,最终达到 sql 重用的目的
我们可以将一些重复性的 SQL 语句进行抽取,以达到复用的效果。
MyBatis映射文件配置: