MyBatis框架 第5章:MyBatis 动态SQL

第5章:MyBatis 动态SQL

5.1 MyBatis动态SQL简介

  1)  动态 SQL是MyBatis强大特性之一。极大的简化我们拼装SQL的操作

  2)  动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似

  3)  MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作

if

choose (when, otherwise)

trim (where, set)

foreach

  4)  OGNL( Object Graph Navigation Language )对象图导航语言,这是一种强大的

表达式语言,通过它可以非常方便的来操作对象属性。 类似于我们的EL,SpEL等

访问对象属性: person.name

调用方法:     person.getName()

调用静态属性/方法: @java.lang.Math@PI

        @java.util.UUID@randomUUID()

调用构造方法: new com.atguigu.bean.Person(‘admin’).name

运算符:      +,-*,/,%

逻辑运算符:  in,not in,>,>=,<,<=,==,!=

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

5.2 if  where

  1)  If用于完成简单的判断.

  2)  Where用于解决SQL语句中where关键字以及条件中第一个and或者or的问题

5.3 trim 

  1)  Trim 可以在条件判断完的SQL语句前后 添加或者去掉指定的字符

prefix: 添加前缀

prefixOverrides: 去掉前缀

suffix: 添加后缀

suffixOverrides: 去掉后缀

5.4 set

  1)  set 主要是用于解决修改操作中SQL语句中可能多出逗号的问题

5.5 choose(when、otherwise)

  1)  choose 主要是用于分支判断,类似于java中的switch case,只会满足所有分支中的一个

5.6 foreach

  1)  foreach 主要用户循环迭代

collection: 要迭代的集合

item: 当前从集合中迭代出的元素

open: 开始字符

close:结束字符

separator: 元素与元素之间的分隔符

index:

迭代的是List集合: index表示的当前元素的下标

迭代的Map集合:  index表示的当前元素的key

5.7 sql

  1)  sql 标签是用于抽取可重用的sql片段,将相同的,使用频繁的SQL片段抽取出来,单独定义,方便多次引用.

  2)  抽取SQL:

  30  引用SQL: