mybatis-plus中的foreach和where标签

1、foreach

实现遍历功能,常用于对List和map进行遍历,拼接sql

#{} 和 ${} 在使用中的技巧和建议

(1)不论是单个参数,还是多个参数,一律都建议使用注解@Param("")

(2)能用 #{} 的地方就用 #{},不用或少用 $ {} ,#{}自动加 ’ ',${} 不自动加

(3)表名作参数时,必须用 ${}。如:select * from ${tableName}

(4)order by 时,必须用 ${}。如:select * from t_user order by ${columnName}

(5)使用 ${} 时,要注意何时加或不加单引号

1、遍历 List

select
<foreach  collection="colnameList" item="colname" separator=",">
          ${colname}
</foreach>
from table1

2、遍历 Map

<foreach collection="map.entrySet()" item="value" index="key">
          ${key} = #{value}
</foreach>

3、遍历 List ,把遍历结果放在 sql in 条件中

select *
from table1
where id in
<foreach collection="idList" item="id" open="(" close=")" separator=",">
		#{id}
</foreach>

2、where 标签

可以自动删掉首个 and 或者 or,使用where标签就不用再写 一句 1=1 进行sql 连接了

select *
from table1
<where>
	and id=1
<where>
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MyBatis-Plus 提供了 `foreach` 标签,用于在 SQL 动态生成 `IN`、`VALUES`、`SET` 等语句。以下是 `foreach` 的使用方法: 1. 在 XML 使用 `foreach` 标签 ```xml <select id="selectByIdList" resultType="com.example.entity.User"> SELECT * FROM user WHERE id IN <foreach collection="idList" item="id" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 2. 在注解使用 `@foreach` 注解 ```java @Select("SELECT * FROM user WHERE id IN " + "<foreach collection='idList' item='id' open='(' separator=',' close=')'>" + "#{id}" + "</foreach>") List<User> selectByIdList(@Param("idList") List<Long> idList); ``` 以上两种方式的效果相同,都是根据传入的 `idList` 生成 `IN` 语句。 `foreach` 标签的属性说明: - `collection`:需要遍历的集合或数组。 - `item`:遍历集合或数组时,当前元素的别名。 - `open`:遍历集合或数组时,生成 SQL 语句的开头。 - `separator`:遍历集合或数组时,生成 SQL 语句的分隔符。 - `close`:遍历集合或数组时,生成 SQL 语句的结尾。 - `index`:遍历集合或数组时,当前元素的下标。 - `javaType`:遍历集合或数组时,当前元素的类型。 - `jdbcType`:遍历集合或数组时,当前元素在 SQL 的类型。 - `property`:遍历集合或数组时,当前元素的属性名。适用于对象集合或数组。 注意事项: - `collection` 属性可以使用 OGNL 表达式,例如 `collection="#{userList}"`。 - 如果遍历的是对象集合或数组,可以使用 `property` 指定当前元素的属性名。 - 如果集合或数组的元素是简单类型(如 int、String),可以省略 `javaType` 和 `jdbcType` 属性。如果是复杂类型(如 Date、BigDecimal),需要指定 `javaType` 和 `jdbcType`。 - `foreach` 可以嵌套 `if`、`where`、`set` 等标签,以实现更复杂的 SQL 生成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Systemd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值