背景:电商项目的订单管理模块实现创建订单业务逻辑时,一个订单对应Order对应多个订单子明细OrderItem,创建订单成功需要对orderItem子明细表进行批量插入,OrderItemMapper如下:
void batchInsert(@Param("orderItemList") List<OrderItem> orderItemList);
对应的OrderItemMapper.xml如下,collection对应的是传入的对象orderItemList,注意这里的foreach标签里并没有open和close,如果添加open=“(” colse=")"结果会报错,正确的是直接将括号放在下面,如下所示:
<!--批量插入-->
<insert id="batchInsert" parameterType="list">
insert into tb_order_item(id,order_no,user_id,product_id,product_name,product_image,
unit_price,total_price,quantity,create_time,update_time)
values
<foreach collection="orderItemList" index="index" item="item" separator=",">
(
#{item.id},#{item.orderNo},#{item.userId},#{item.productId},#{item.productName},#{item.productImage},
#{item.unitPrice},#{item.totalPrice},#{item.quantity},now(),now()
)
</foreach>
</insert>