5 回答

TA贡献1797条经验 获得超4个赞
在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。
<insert id="batchInsert">
insert into
personal_tag(type, tag, create_time, open_account_id)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.type,jdbcType=INTEGER},
#{item.tag,jdbcType=VARCHAR},
#{item.createTme,jdbcType=TIMESTAMP},
#{item.openAccountId,jdbcType=BIGINT})
</foreach>ON DUPLICATE KEY UPDATE tag=tag

TA贡献2016条经验 获得超9个赞
ON DUPLICATE KEY UPDATE tag=tag
把这一句改为
ON DUPLICATE KEY UPDATE tag=#{item.tag}

TA贡献1801条经验 获得超8个赞

TA贡献2065条经验 获得超14个赞
<insert id="batchInsert" parameterType="java.util.List">
insert into
personal_tag(type, tag, create_time, open_account_id)
values
<foreach collection="list" item="item" separator=",">
(#{item.type,jdbcType=INTEGER},
#{item.tag,jdbcType=VARCHAR},
#{item.createTme,jdbcType=TIMESTAMP},
#{item.openAccountId,jdbcType=BIGINT})
</foreach>ON DUPLICATE KEY UPDATE tag=tag
</insert>
在insert标签加参数类型呢
修改下参数别名呢,还有接口的参数名,下面是我们之前的项目里的
void addRiskItemBatch(@Param("lstItem")List<FastRiskItemInfo> lstItem);
<!-- 批量添加条款 -->
<insert id="addRiskItemBatch" useGeneratedKeys="true" parameterType="java.util.List">
<selectKey resultType="long" keyProperty="id" order="AFTER">
SELECT
LAST_INSERT_ID()
</selectKey>
insert into fast_risk_item_info (query_id, risk_item_id,
item_no, item_name, item_price,
status, create_time)
values
<foreach collection="lstItem" item="item" index="index" separator="," >
(#{item.queryId,jdbcType=INTEGER}, #{item.riskItemId,jdbcType=INTEGER},
#{item.itemNo,jdbcType=VARCHAR}, #{item.itemName,jdbcType=VARCHAR}, # {item.itemPrice,jdbcType=DECIMAL},
#{item.status,jdbcType=INTEGER}, #{item.createTime,jdbcType=VARCHAR})
</foreach>
</insert>
添加回答
举报