天天看点

动态sql

​ Mybatis 的映射文件中,前面我们的 SQL 都是比较简单的,有些时候业务逻辑复杂时,我们的 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 中可将重复的 sql 提取出来,使用时用 include 引用即可,最终达到 sql 重用的目的

我们可以将一些重复性的 SQL 语句进行抽取,以达到复用的效果。

MyBatis映射文件配置: