动态SQL

动态SQL

在这里插入图片描述

使用动态SQL实现多条件查询

动态SQL是MyBalis的一个强大的特性。在使用JDBC操作数据时,如果查询条件特别多。将条
件串联成SQL字符串是一件痛苦的事情,通常的解决方法是写很多的if——else条件语句对字符串进行拼接、并确保不能忘了空格或在字段的最后省略逗号。MyBatis使用一种强大的动态SQL语言来改善汶种情形。动态SQL基于OGNL的表达式,可使我们方便地在SQL语句中实现某些逻辑。用于实现动态SQL的元素如下。

it: 利用if实现简单的条件选择。
➢choose(when, otherwise): 相当于Java中的switch语句,通常与when和otherwise搭配。
➢where: 简化SQL语句中where的条件判断。
➢set: 解决动态更新语句。
➢trim:可以灵活地去除多余的关键字。
➢foreach: 迭代一个集合,通常用于in条件。
在这里插入图片描述

trim

trim元素也会自动识别其标签内是否有返回值,若有返回值,会在自己包含的内容前加上某些
前缀,也可在其后加上某些后缀,与之对应的属性是prefix和suffix:也可把包含内容的首部某些内
容覆盖(即忽略),或者把尾部的某些内容覆盖,与之对应的属性是prefixOverrides和sffixOverrides :正因为trim有这样强大的功能,我们可以利用trim来替代where元素,并实现与where 元素相同的
效果。
在这里插入图片描述
在这里插入图片描述

foreach标签

对于SQL条件循环(in语句)、需要使用foreach标签。通过上述代码,来介绍下forech的基本属性:
item.表示集合中每一个元素进行迭代时的别名(如此处的“rolelds ).
index:指定一个名称、用于表示在迭代过程中,每次迭代到的位置。(此处省略,未指定).
open:表示该语句以什么开始(既然是in条件语句,所以必然是以"("开始).
separator:表示在每次进行迭代之间以什么符号作为分隔符(既然是in条件语句,所以必然是以“,"作为分隔符).
close:表示该语句以什么结束(既然是in条件语句,所以必然是以“)"结束).
collection.最关键并最容易出错的属性,需格外注意,该属性必须指定,不同情况下,该
属性的值是不一样的。主要有三种情况
若入参为单参数且参数类型是一个List的时候, collection属性值为list.
若入参为单参数且参数类型是一个数组的时候, collection属性值为array (此处传入参
数Integer[] rolelds为数组类型,故此处collection属性值设为“array ).
若传入参数为多参数,就需要把它们封装为一个Map进行处理。
select中返回的是一个resultMap (id= -usertMapByRole),该resultMap也进行了相应的字段映射。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

choose

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值