mybatis foreach 语句循环读取map数据

在××maper.java中添加@parame注解;

int Insert(@Param("rd")Map<String, Object> rd);

在对应的mapper.xml文件中如下写入;

 

<insert id="Insert" parameterType="java.util.HashMap">
insert into sys_code_para
<foreach collection="rd" index="key" item="value"
open="(" close=")" separator=",">
<if test="key !=null ">
${key}
</if>
</foreach>
values
<foreach collection="rd" index="key" item="value"
open="(" close=")" separator=",">
<if test="key !=null ">
#{value}
</if>
</foreach>
</insert>

 

最后打印sql语句如下:

==>  Preparing: insert into sys_code_para ( sys_code , para_code , para_name , sys_name , para_state , para_value1 ) values ( ? , ? , ? , ? , ? , ? ) 

MyBatis提供了一个`<foreach>`标签,该标签可以用于迭代一个集合或数组,并将其中的每个元素作为参数传递给SQL语句中的IN子句。使用`<foreach>`标签可以避免手动构建IN子句所需的重复代码。 以下是使用`<foreach>`标签的示例: ```xml <select id="selectUsers" resultType="User"> SELECT * FROM users WHERE id IN <foreach item="id" collection="ids" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 在上面的示例中,我们使用`<foreach>`标签迭代一个名为`ids`的集合,并将其中的每个元素作为参数传递给SQL语句中的IN子句。`<foreach>`标签中的`item`属性指定了集合中每个元素的名称,`collection`属性指定了要迭代的集合名称,`open`属性指定了IN子句的开头,`separator`属性指定了每个元素之间的分隔符,`close`属性指定了IN子句的结尾。 使用`<foreach>`标签时,需要指定一个集合或数组作为参数。可以使用Java中的List、Set、数组等集合类型作为参数,也可以使用MyBatis提供的`<foreach>`标签中的`collection`属性中指定的OGNL表达式获取集合对象。 除了使用`<foreach>`标签迭代集合外,还可以使用`<foreach>`标签迭代一个Map。在这种情况下,`<foreach>`标签中的`item`属性将包含Map中每个元素的键,`index`属性将包含Map中每个元素的值,例如: ```xml <select id="selectUsers" resultType="User"> SELECT * FROM users WHERE id IN <foreach item="key" index="value" collection="map" open="(" separator="," close=")"> #{key} </foreach> </select> ``` 在上面的示例中,我们使用`<foreach>`标签迭代一个名为`map`的Map,并将其中的每个键作为参数传递给SQL语句中的IN子句。`<foreach>`标签中的`item`属性指定了Map中每个元素的键,`index`属性指定了Map中每个元素的值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值