67ff61a74a04367a0207ff14a3c1292e.png

当我们需要写复杂的 SQL 语句,往往需要拼接,而拼接 SQL ,稍微不注意,由于引号,空格等缺失可能都会导致错误。

  那么怎么去解决这个问题呢?

我们可以使用mybatis的 动态SQL,通过 if, choose, when, otherwise, trim, where, set, foreach等标签,可组合成非常灵活的SQL语句,从而在提高 SQL 语句的准确性的同时,也大大提高了开发人员的效率。

1.where+if

这个“where”标签会知道如果它包含的标签中有返回值的话,它就插入一个‘where’。此外,如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉。

660f8e8025630441c363540c213a7912.png

在以上实例中,我们就是使用where-if语句进行多参数的传递,下面我们再演示传一个参数的时候。

01e70c8d8cabda1cbe975efc56835b01.png

我们发现,当第二个参数是空值时,这里where之后的条件语句也少了一个。

2.where+choose

有时候,我们不想用到所有的查询条件,只想选择其中的一个,查询条件有一个满足即可,使用 choose 标签可以解决此类问题,类似于 Java 的 switch 语句

62dd6e400d5948c6b76a0de8b0ce6c0e.png

这是在choose语句传递一个参数时的情况。那么当我们传递两个参数是呢?

8e8bb53749abdb0b851b4ce4cc5f2243.png

当我们传递两个参数时,他也会只获取其中一个参数。这和我们javas的witch一样,当第一次判断成功时,之后的代码就不会再走了。

3.where+bind

bind可以将OGNL表达式的值绑定到一个变量中,方便后来引用这个变量的值

ccfde9057a82affc30ae12c72b9ad12f.png

bind语句一般用于sql的模糊查询。

就先介绍这三个吧,拜拜。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐