批量插入在实际工作中使用的频率还是挺大的,最近写到了批量插入的接口,现在记录一下
具体步骤如下:
第一步:在mapper接口中编写方法
例如:
void batchInsertToCarPolicy(@Param("list") List<CarPolicy> list);
第二步:在 ****Mapper.xml中写相应的sql执行
例如:
<insert id="batchInsertToCarPolicy" parameterType="com.hauto.order.model.CarPolicy">
insert into o_car_policy(id,order_id,commercial_no,compulsory_no,commercial_premium,
compulsory_premium,travel_premium,
company_code,insure_city,insure_city_code,underwriting_status,create_by,commercial_commission,compulsory_commission,travel_commission,attribute)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.id},#{item.orderId},#{item.commercialNo},#{item.compulsoryNo},#{item.commercialPremium},#{item.compulsoryPremium},#{item.travelPremium},
#{item.companyCode},#{item.insureCity}, #{item.insureCityCode},#{item.underwritingStatus},
#{item.createBy},#{item.commercialCommission},#{item.compulsoryCommission},#{item.travelCommission},#{item.attribute}
)
</foreach>
</insert>
说明:
1.在接口文件中的方法参数中,要用@Param注解,否则容易报异常
2. <foreach collection="list" item="item" index="index" separator=","> </foreach>
,该标签中的 collection 属性值 是接口中参数名称,如接口中的方法的参数名是list,那么collection属性的值就只能取值list,如果mapper接口的方法中参数名叫userList,那这里collection的取值就是userList,其他标签中的其他属性值通常就使用例子中这样的
以后遇到了批量查询,再补充批量查询