MyBatis框架动态SQL处理简单的多参数查询
MyBatis框架动态SQL的常用标签
标签 | 说明 |
if | 条件判断,与 Java 中的机语句类似 |
where | 为 SQL 语句动态添加 where 关键字 |
choose | 条件判断,这是一个组合标签,需要与 when 、otherwise 、标签搭配使用。可以实现 Java 中的 switch 语句类似的功能 |
foreach | 以遍历方式处理集合类型参数 |
set | 为 SQL 语句动态添加 set 关键字,实现动态实现数据更新功能 |
trim | 对 SQL 语句进行格式化处理,添加或移除前后绥 |
if 标签
if 标签是 MyBatis 框架动态 SQL技术中重要且常用的标签之一,它所实现的功能与Java中的if语句基本相同,用法也很相似。
where 标签
where 标签的主要作用是对 SQL语句中的where关键字进行简化处理,并可以智能地处理其内部 and、or 等关键字,避免多余字符带来的语法错误。
choose(when、otherwise)标签
choose 标签是一个组合标签,通常与 when、otherwise 标签配合使用,实现了类似于Java中 switch 语句的功能。
结论:
- choose(when、otherwise)是一个组合标签,when、otherwise 标签写在 choose 标签中。
- 当 when 标签中的 test 属性判断为tue,就会执行它所包含的语句。
- choose 中的多个 when 标签只会执行匹配成功的第一个,执行之后跳出 choose 标签。
- 当所有的 when 标签中的 test 属性判断都为 false 时,进入 otherwise 标签
提示:
第一个 when 标签符合条件后,其他的 when 标签就不会被执行了。
当所有条件都不满足时,才会执行 otherwise 标签内的代码。
语法中的属性介绍:
- item:遍历数组时,为数组或 List 集合中的元素起的别名。
- open:起始位置的拼接字符,表示in语句以"("左括号开始。
- close:结束位置的拼接字符,表示in语句以")"右括号结束。
- Separator:元素之间的连接符,表示in语句中的元素之间以“,逗号连接。
- Collection:参数名称。当参数为数组类型时,默认参数名为array。
小结:
- 当参数为数据基本类型或数组、List集合类型时,MyBatis框架会将参数封装在一个 Map 对象中。
- 当参数为数组类型时,collection 对应值默认为 array。
- 当参数为List集合类型时,collection 对应值默认为 list。
- 如果使用 @Param 注解为参数设置了名称,collection 对应值为参数名。
- 当参数为 Map 对象时,collection 对应值为该Map对象中数组或集合元素对应的 key。
总结
- MyBatis 框架的动态 SQL 技术是通过一个或多个标签的使用来实现的。
- where + if 标签可以实现动态查询功能。
- choose (when、otherwise) 组合实现多条件查询时,只匹配其中一个条件。
- foreach 标签可以实现对数组、List 集合等多值参数的处理。
- set + if 标签可以实现动态更新功能。
- trim 标签可以为 SQL 语句动态添加或移除指定的前后缀。