一、动态 SQL 简介

  1、动态 SQL 是 MyBatis 强大特性之一。极大的简化拼接 SQL 的操作;
  2、动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似;
  3、MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作
    if 标签
    choose(when,otherwise)
    trim(where,set)
    foreach

  

二、OGNL 简介

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

访问对象属性:          person.name
调用方法:             person.getName()
调用静态属性/方法:     @java.lang.Math@PI
                     @java.util.UUID@randomUUID()

调用构造方法:         new com.mybatis.bean.Person('admin').name
运算符:              +、-、*、/、%
逻辑运算符:           int、not in、>、>=、<、<=、==、!=

  

  注意XML 中特殊符号如 ",>,< 等这些都需要使用转义字符。

  在 XML 中有 5 个预定义的实体引用:

    MyBatis(五)动态SQL 之 动态SQL简介_xml

 

   注释:严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。

 

  访问集合伪属性:

  MyBatis(五)动态SQL 之 动态SQL简介_sql_02