MyBatis学习笔记
🌈 🌈 🌈
动态sql…
MyBatis 动态SQL
一. 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中特殊符号如”,>,<等这些都需要使用转义字符
二. if where
1). If用于完成简单的判断.
2). Where用于解决SQL语句中where关键字以及条件中第一个and或者or的问题.
- sql映射文件
1 | <!-- |
- 测试文件
1 | //Mapper接口:获取Mapper接口的 代理实现类对象 |
- 测试结果

三. trim
1). Trim 可以在条件判断完的SQL语句前后 添加或者去掉指定的字符。
prefix: 添加前缀prefixOverrides: 去掉前缀suffix: 添加后缀suffixOverrides: 去掉后缀
可以用于代替if where 和set
- sql映射文件
1 | <select id="getEmpsByConditonTrim" resultType="Emp"> |
- 测试文件
1 | //测试Trim |
- 测试结果

四. set
1). set 主要是用于解决修改操作中SQL语句中可能多出逗号的问题
- sql映射文件
1 | <!-- public void updateEmp(Emp emp); --> |
- 测试文件
1 | System.out.println("-------set--------"); |
- 测试结果

五. choose(when、otherwise)
1). choose 主要是用于分支判断,类似于java中的switch case,只会满足所有分支中的一个
- sql映射文件
1 | <select id="getEmpsByConditonChoose" resultType="Emp"> |
- 测试文件
1 | System.out.println("-------Choose--------"); |
- 测试结果

六. foreach
foreach 主要用于循环迭代
collection: 要迭代的集合item: 当前从集合中迭代出的元素open: 开始字符close:结束字符separator: 元素与元素之间的分隔符index:- 迭代的是List集合: index表示的当前元素的下标
- 迭代的Map集合: index表示的当前元素的key
1). 批量查询
- sql映射文件
1 | <!--public List<Emp> getEmpsByConditonForeach(@Param("list")List<Integer> empnos);--> |
- 测试文件
1 | System.out.println("-------foreach-list-------"); |
- 测试结果

2). 批量保存
- sql映射文件
1 | <!-- 批量保存 --> |
- 测试文件
1 | System.out.println("-------foreach插入数据--------"); |
- 测试结果

七. 内置参数(_parameter,_databaseId)
- sql映射文件
1 | <!-- 两个内置参数 |
- 测试文件
1 | System.out.println("-------_databaseId--------"); |
- 测试结果

八. bind
- sql映射文件
1 | <!-- bind:可以将OGNL表达式的值绑定到一个变量中,方便后来引用这个变量的值 --> |
- 测试文件
1 | System.out.println("-------bind--------"); |
- 测试结果

九. sql
- sql映射文件
1 | <!-- 抽取可重用的sql片段。方便后面引用 |
- 本文作者:
腾飞
- 本文链接:
https://www.tengfei.eu.org/article/8b840100.html
- 版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!