<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>