当我们需要写复杂的 SQL 语句,往往需要拼接,而拼接 SQL ,稍微不注意,由于引号,空格等缺失可能都会导致错误。
那么怎么去解决这个问题呢?
我们可以使用mybatis的 动态SQL,通过 if, choose, when, otherwise, trim, where, set, foreach等标签,可组合成非常灵活的SQL语句,从而在提高 SQL 语句的准确性的同时,也大大提高了开发人员的效率。
1.where+if
这个“where”标签会知道如果它包含的标签中有返回值的话,它就插入一个‘where’。此外,如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉。
在以上实例中,我们就是使用where-if语句进行多参数的传递,下面我们再演示传一个参数的时候。
我们发现,当第二个参数是空值时,这里where之后的条件语句也少了一个。
2.where+choose
有时候,我们不想用到所有的查询条件,只想选择其中的一个,查询条件有一个满足即可,使用 choose 标签可以解决此类问题,类似于 Java 的 switch 语句
这是在choose语句传递一个参数时的情况。那么当我们传递两个参数是呢?
当我们传递两个参数时,他也会只获取其中一个参数。这和我们javas的witch一样,当第一次判断成功时,之后的代码就不会再走了。
3.where+bind
bind可以将OGNL表达式的值绑定到一个变量中,方便后来引用这个变量的值
bind语句一般用于sql的模糊查询。
就先介绍这三个吧,拜拜。