<insert id="mergeBank" parameterType="java.util.List"> merge into EMP a //into 后跟要去插入的表 using ( <foreach collection="emps" item="emp" open="" close="" separator="union all">//循环传进来的对象集合 select #{emp.sjdwdm} sjdwdm, #{emp.cbkmid} cbkmid, #{emp.department} department, #{emp.station} station, #{emp.id} id from dual //这个我理解就是虚空表 固定写法 </foreach> ) b on ( a.ID = b.id //表关联关系 一旦写了下方则该字段不能被 update ) when matched then //满足就修改 UPDATE SET a.SJDWDM = b.sjdwdm, a.CBKMID=b.cbkmid, a.DEPARTMENT = b.department, a.STATION=b.station when not matched then //不满足添加 INSERT( a.SJDWDM, a.CBKMID, a.DEPARTMENT, a.STATION ) VALUES( b.sjdwdm, b.cbkmid, b.department, b.station ) </insert>