mybatis中foreach的用法及#{}和${}的区别

本文介绍了Mybatis中`foreach`标签的用法,包括实现in集合、批量插入和动态UPDATE。同时,详细解释了`#{}`与`${}`的区别,指出`#{}`能防止SQL注入,而`${}`存在安全隐患。文中通过示例展示了如何在Mapper接口和XML文件中使用这些特性,并强调了使用`#{}`的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

foreach用法

    SQL语法中有时会使用IN关键字,例如id in (1,2,3).可以使用${id}方式取值,但这种写法不能给你防止SQL注入,想避免SQL注入就需要用#{}的方式,这时就要配合使用foreach标签来满足需求。
    foreach包含以下属性:
- collection:必填,值为要迭代循环的属性名,这个属性值的情况有很多。
- item:变量名,值为从迭代对象中取出的每一个值。
- index:索引的属性名,在集合数组情况下值为当前索引值,当迭代循环的对象是Map类型时,这个值为Map的key(键值)。
- open:整个循环内容开头的字符串。
- close:整个循环内容结尾的字符串。
- separator:每次循环的分隔符。

    foreach可以对数组,Map或实现了Iterable接口(如List,Set)的对象进行遍历。数组在处理时会转换为List对象,因此foreach遍历的对象可以分为两大类:Iterable类型和Map类型。这两种类型在遍历时情况不一样。

1.foreach实现in集合

    foreach实现in集合(或数组)是最简单和最常用的一种情况,下面介绍如何根据传入的用户id集合查询出所有符合条件的用户。
1).UseMapper接口中增加如下方法:

/**
*根据用户id集合查询
*@param idList
*@return
/
List<SysUser> selectByIdList(List<Long> idList);

2).在UserMapper.xml中添加如下SQL:

<select id=<
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值