第5章 动态SQL

动态SQL是MyBatis强大特性之一。极大的简化我们拼装SQL的操作。 动态SQL元素和使用JSTL或其他类似基于XML的文本处理器很相似。 MyBatis采用功能强大的基于OGNL的表达式来简化操作。

if

"" 是 ""

choose (when、otherwise)

where

set

trim

foreach

动态SQL的常用操作是对集合遍历。通常是在构建IN条件语句的时候使用。

当迭代集合或数组时:index表示迭代次数,item表示本次迭代获取的元素。 当迭代字典(或者Map.Entry)时,index是键,item是值。

bind

bind元素可以从OGNL表达式中创建一个变量并将其绑定到上下文。例如:

多数据库供应商支持(了解)

若在MyBatis中配置了databaseIdProvider,则可以使用_databaseId变量,这样就可以根据不同的数据库厂商构建特定的SQL语句。

OGNL

OGNL(Object Graph Navigation Language)对象图导航语言。 是一种强大的表达式语言。通过它可以非常方便的来操作对象属性。 类似EL,SpEL等。

作用 示例
访问对象属性 person.name
调用方法 person.getName()
调用静态属性/方法 @java.lang.Math@PI<br />@java.util.UUID@randomUUID()
调用构造方法 new com.atguigu.bean.Person(‘admin’).name
运算符 +、-、*、/、%
逻辑运算符 in、not in、>、>=、<、<=、==、!=

注意:xml中特殊符号如“>、<”等这些都需要使用转义字符。

访问集合伪属性:

栏目