动态sql:where,if,trim,foreach的使用

where和if的组合使用

where和if一般结合使用:
1.若where标签中的if条件都不满足,则where标签没有任何功能,即不会添加where关键字
2.若where标签中的if条件满足,则where标签会自动添加where关键字,并将条件最前方多余的and去掉
注意:where标签不能去掉条件最后多余的and,故and都统一写在前面。
因为传过来的参数是一个emp的对象,故if中直接属性名来判断即可。
在这里插入图片描述

trim标签的使用(与where if作用类似)

trim用于去掉或添加标签中的内容
常用属性:
prefix:在trim标签中的内容的前面添加某些内容
prefixOverrides:在trim标签中的内容的前面去掉某些内容
suffix:在trim标签中的内容的后面添加某些内容
suffixOverrides:在trim标签中的内容的后面去掉某些内容
在这里插入图片描述
(suffixOverrides=“and|or”删除后面多余的 and 或 or, prefix=“where” 在条件判断语句前加上了where关键字)

foreach的使用,拿列表和数组举例

内部属性介绍:
collection:设置要循环的数组或集合
item:表示集合或数组中的每一个数据
separator:设置循环体之间的分隔符
open:设置foreach标签中的内容的开始符
close:设置foreach标签中的内容的结束符

批量插入emp元素。
在这里插入图片描述
这里我用 arg0 作为键值来接收的列表,item是遍历列表的元素。

查找did=(1,2)的所有emp
在这里插入图片描述
open="(“在循环开始前加上( , close=”)"在循环结束后加上)。separator=, 表示以 ,为间隔。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是这些常用动态SQL标签的用法: 1. `<if>` 标签 `<if>` 标签用于在 SQL 语句中添加条件判断。例如: ```xml <select id="getUserList" resultType="User"> SELECT * FROM user <where> <if test="name != null"> AND name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </where> </select> ``` 上面的 SQL 查询语句中,如果传入了 `name` 和 `age` 参数,则会根据这两个参数进行查询,否则不会加入对应的条件。 2. `<where>` 标签 `<where>` 标签用于动态生成 SQL 语句中的 WHERE 子句。例如: ```xml <select id="getUserList" resultType="User"> SELECT * FROM user <where> <if test="name != null"> AND name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </where> </select> ``` 上面的 SQL 查询语句中,如果传入了 `name` 和 `age` 参数,则会根据这两个参数进行查询,否则不会加入 WHERE 子句。 3. `<set>` 标签 `<set>` 标签用于动态生成 SQL 语句中的 SET 子句,通常用于更新操作。例如: ```xml <update id="updateUser" parameterType="User"> UPDATE user <set> <if test="name != null"> name = #{name}, </if> <if test="age != null"> age = #{age}, </if> </set> WHERE id = #{id} </update> ``` 上面的 SQL 更新语句中,如果传入了 `name` 和 `age` 参数,则会根据这两个参数更新对应的字段,否则不会加入 SET 子句。 4. `<trim>` 标签 `<trim>` 标签用于动态生成 SQL 语句中的任何部分,可以用于去除生成 SQL 语句中的不必要的逗号或 AND/OR 等关键字。例如: ```xml <select id="getUserList" resultType="User"> SELECT * FROM user <where> <trim prefix="AND" prefixOverrides="OR"> <if test="name != null"> OR name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </trim> </where> </select> ``` 上面的 SQL 查询语句中,`<trim>` 标签会将生成的 SQL 语句中的 `OR` 关键字前缀去除,同时去除不必要的逗号。 5. `<foreach>` 标签 `<foreach>` 标签用于动态生成 SQL 语句中的 IN 子句,通常用于查询或删除操作。例如: ```xml <select id="getUserList" resultType="User"> SELECT * FROM user WHERE id IN <foreach collection="ids" item="id" open="(" close=")" separator=","> #{id} </foreach> </select> ``` 上面的 SQL 查询语句中,`<foreach>` 标签会根据传入的 `ids` 参数生成对应的 IN 子句,例如 `WHERE id IN (1, 2, 3)`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值