Mybatis之动态sql
一 概述
- 动态 SQL是MyBatis强大特性之一。极大的简化我们拼装 SQL的操作。
- 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处 理器相似。
- MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作。
– if :条件判断
– choose (when, otherwise) 多情况条件判断
– trim (where, set) :用于条件查询和更新
– foreach:遍历
二 标签的使用
- if的使用:条件判断
- choose (when, otherwise):多情况判断
- trim (where, set)
(1)where :用于条件查询
(2)set:用于更新
(3)trim:去空格 - foreach遍历
(1)动态 SQL 的另外一个常用的必要操作是需要对一个集合 进行遍历,通常是在构建 IN 条件语句的时候
(2)当迭代列表、集合等可迭代对象或者数组时
index是当前迭代的次数
item的值是本次迭代获取的元素
(3)当使用字典(或者Map.Entry对象的集合)时
index是键,item是值 - bind绑定变量
bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。比如: - Multi-db vendor support
若在 mybatis 配置文件中配置了databaseIdProvider , 则可 以使用“_databaseId”变量,这样就可以根据不同的数据库 厂商构建特定的语句
三 OGNL的介绍
OGNL( Object Graph Navigation Language )对象图导航语言,这是一种强大的表达式语言,通过它可以非常方便的来操作对象属性。 类似于我们的EL,SpEL等。
- 使用OGNL
(1)访问对象属性:person.name
(2)调用方法:person.getName
(3)调用静态方法/方法:@java.lang.Math@PI 、@java.util.UUID@randomUUID()
(4)调用构造方法: new com.atguigu.bean.Person(‘admin’).name
(5)运算符: +,-*,/,%
(6)逻辑运算符: in,not in,>,>=,<,<=,==,!= ,注意在xml中特殊字符如“<,>”等这些都需要使用转义字符,如使用“<,>” - 访问集合伪属性