MyBatis动态SQL
MyBatis框架主要通过标签的配合使用实现SQL语句的动态拼接.前后缀格式化处理.复杂参数处理等功能
好处:动态 SQL 大大减少了编写代码的工作量,更体现了 MyBatis 的灵活性、高度可配置性和可维护性。
MyBatis的框架动态SQL的常用标签
if:动态SQL技术中最常用的标签之一 类似于Java中的if语句
where:为SQL语句动态添加where关键字
choose:是一个组合标签,通常与when、otherwise标签配合使用 类似于Java中switch语句
foreach:迭代一个集合,通常用于in条件
set:为SQL语句动态添加set关键字,实现动态实现数据更新功能
trim:动态地为SQL语句添加前后缀 智能忽略标签前后多余的and、or或逗号等字符
MyBatis框架动态SQL处理集合参数
item:遍历数组时,为数组或List集合中的元素起的别名。
open:起始位置的拼接字符,表示in语句以“(”左括号开始。
close:结束位置的拼接字符,表示in语句以“)”右括号结束。
separator:元素之间的连接符,表示in语句中的元素之间以“,”逗号连接。
collection:参数名称。当参数为数组类型时,默认参数名为array。当参数类型为List集合时,默认参数名为list。当参数类型为Map时,参数名为Map中集合元素所在键值对的key。
MyBatis框架动态SQL处理更新功能
MyBatis框架动态更新数据的功能主要通过set+if标签实现.
MyBatis框架动态SQL知识扩展
trim标签
where、 set标签能够动态地为SQL 语句添加前后缀,并可以智能地忽略标签前后多余的and、or或逗号等字符。除where和set标签外, MyBatis框架还提供了更为灵活的 trim标签来实现类似的功能。
trim标签的属性
prefix:前缀,可以自动对 trim 标签所包含的语句是否有返回值进行判断。如果有返回值.则为SQL 语句拼接相应前缀。
suffix:后缀,在trim标签包含的语句末尾拼接后缀。
prefixOverrides:忽略的前缀,忽略trim标签内部首部指定的内容。
suffixOverrides:忽略的后缀,忽略trim标签包含内容尾部指定的内容。
总结
MyBatis框架的动态SQL技术是通过一个或多个标签的使用来实现的。
where+if标签可以实现动态查询功能。
choose(when、otherwise)组合实现多条件查询时,只匹配其中一个冬件
foreach标签可以实现对数组、List 集合等多值参数的处理。
set +if标签可以实现动态更新功能。
trim标签可以为SOL 语句动态添加或移除指定的前后缀。