Mybatis的强大功能之一是它的动态SQL。如果您有JDBC或其他类似框架的经验,您可以体验到痛苦的SQL语句根据不同的条件缝制的痛苦。但还要注意保存列表列表的最终逗号。动态SQL特征的使用可以完全摆脱这种痛苦。
动态SQL通常所做的是部分包含位置的一部分。例如:
有时,我们不想使用所有条件语句,而只想从中选择一两个条件。在对这种情况的响应中,Mybatis提供了选择元素,这有点像Java中的Switch语句。
在第一个栗子中,如果未添加1 = 1,例如,当未建立第一个条件时,SQL就会如下:
为了防止这种情况,我们可以使用Where元素:
元素知道,您仅在条件上有多个以上时才插入“ where”子句。此外,如果最终内容为“和”或“”,则元素也知道如何删除它们。
定制的修剪元素等效于Whater元素为::
perfix表示语句的前缀,前缀弗里德里德斯指示要删除的前缀(请注意,在本示例中也有必要的空间)。结果是,将删除Prefixoverrides属性中指定的所有内容,并将其插入到该属性中。前缀属性中指定的指定内容。
“动态更新语句”的类似解决方案被称为集合。设置元素可用于动态包含需要更新的列,并放弃其他列。例如:
在这里,设置元素将动态前置关键字动态,并且还将消除无关的逗号。
相应的修剪元素写作是:
Suffixoverrides删除后缀。
动态SQL的另一个通常必要的操作是在构建条件语句时通常穿越集合。例如:
绑定元素可以从OGNL表达式创建变量并将其绑定到上下文。例如:
它代表进来的参数,与传递连接后分配给模式。
要在已解决的映射器接口类中使用动态SQL,您可以使用脚本元素。例如:
配备了“ _databaseId”变量的数据库形式可用于动态代码,因此您可以根据不同的数据库制造商构建特定句子。例如,以下示例:
