需求是给出一个对象的List,批量向数据库中insert,根据主键id判断如果数据库中有这条就更新,如果没有这条就插入。
dao接口:
public void insertRepaymentProtocol(@Param("list") List<RepaymentProtocolVo> list);
xml:
<insert id="insertRepaymentProtocol"
parameterType="java.util.List">
insert into t_repayment_protocol
(id,loan_id,create_time,remarks,protocol_repay_amount,
remain_amount,protocol_repay_date,warning_status,create_by,update_by,del_flag)
values
<foreach collection="list" item="repay" index="index"
separator=",">
(
#{repay.id},#{repay.loanId},#{repay.createTime},#{repay.remarks},
#{repay.protocolRepayAmount},#{repay.remainAmount},#{repay.protocolRepayDate},
#{repay.warningStatus},#{repay.createBy},#{repay.updateBy},#{repay.delFlag})
</foreach>
ON DUPLICATE KEY UPDATE
id=values(id),
protocol_repay_amount=values(protocol_repay_amount),
protocol_repay_date=values(protocol_repay_date)
</insert>
ON DUPLICATE KEY UPDATE有则更新,无则插入,有和无是根据数据库表的主键判断的。
protocol_repay_amount=values(protocol_repay_amount)表示需要更新的属性