mybatis 插入多条记录
    1.传List
    2.传map,包括主表参数和list
    void saveRepairListPartDetail(List< RepairListPartDetail> serviceListPartDetails);
    < insert id=”saveRepairListPartDetail” parameterType=”java.util.List”>
    declare @repairkind int
    select @repairkind = repairkind from repairlistmaster where repairno =’${list[0].repairno}’
    < foreach collection=”list” item=”item” index=”index” separator=”;”>
    if(EXISTS(select 1 from RepairListPartDetail where repairno=’${item.repairno}’ and partno =’${item.partno}’ and rid =’${item.rid}’) )
    begin
    update RepairListPartDetail
    < set>
    < if test=”item.partname != null and item.partname != ‘’ “>
    partname = #{item.partname},
    < /if>
    < if test=”item.remark != null “>
    remark = #{item.remark},
    < /if>

    < /set>
    where repairno =’${item.repairno}’ and partno =’${item.partno}’ and rid =’${item.rid}’
    end else begin
    insert into
    RepairListPartDetail(repairno,itemno)
    values(#{item.repairno},#{item.itemno},#{item.partno},#{item.partname},#{item.amount},#{item.taxprice},#{item.taxmoney},#{item.price},#{item.money},#{item.tax},#{item.costprice},
    #{item.unitgroup},#{item.baseunit},#{item.unitdesc})
    end
    < /foreach>
    < /insert>
    < /update>
    这里如果要访问主表,只能 ${list[0].repairno}
    if (repairListPartDetails != null && repairListPartDetails.size() != 0) {
    //第1种
    int size = repairListPartDetails.size();
    int num = 30;
    int div = size / num;
    int mod = size % num;
    for(int i = 0;i < div; i++){
    List newList = repairListPartDetails.subList(i num,i num + num);
    repairMapper.saveRepairListPartDetail(newList);
    }
    if (mod > 0) {
    List newList = repairListPartDetails.subList(size - mod, size);
    repairMapper.saveRepairListPartDetail(newList);
    }

    }
    2.void saveRepairListPackPayDetail(Map< String, Object> map);
    < update id=”saveRepairListPackPayDetail” parameterType=”hashmap”>
    < foreach collection=”list” item=”item” index=”index” separator=”;”>
    if(not EXISTS(select 1 from RepairListPackPayDetail where repairno=’${item.repairno}’ and memberpackno=’${item.memberpackno}’ ) )
    begin
    insert into RepairListPackPayDetail (RepairNo, MemberPackNo, MemberPackName,CurrBalance,Currminlimit, UsePackMoney, CreateDate, ServiceDate)
    values(#{item.repairno, jdbcType=VARCHAR},#{item.memberpackno, jdbcType=VARCHAR},#{item.memberpackname, jdbcType=VARCHAR},
    #{item.currbalance, jdbcType=NUMERIC},#{item.currminlimit, jdbcType=NUMERIC},0,getdate(),null)
    end
    < /foreach>
    < if test=”repairno != null and repairno != ‘’ “>
    update repairlistmaster set IsMultiPackPay = 1 where repairno =’${repairno}’ //
    < /if>
    < /update>
    int size = listDispatch.size();
    int num = 40;
    int div = size / num;
    int mod = size % num;
    for(int i = 0;i < div; i++){
    List newList = listDispatch.subList(i num,i num + num);
    Map< String,Object> map = new HashMap< String,Object>();
    map.put(“repairno”,repairListMaster.getRepairno());
    map.put(“list”,newList);
    repairMapper.saveRepairListPackPayDetail(map);
    }
    if (mod > 0) {
    List newList = listDispatch.subList(size - mod, size);
    Map< String,Object> map = new HashMap< String,Object>();
    map.put(“repairno”,repairListMaster.getRepairno());
    map.put(“list”,newList);
    repairMapper.saveRepairListPackPayDetail(map);
    }