插入数据,如果数据库中主键已存在则更新on duplicate key update后的字段,主键不变。

<!-- 插入/更新设备列表 -->
  <insert id="insertOrUpdateList" parameterType="java.util.List">
    insert into tmp
      <trim prefix="(" suffix=")" >
         uid, m_id, name,is_selected,is_delete,create_time,create_userid
     </trim>
     values
     <foreach  collection="list" item="item" index="index" separator=",">
      <trim prefix=" (" suffix=")" suffixOverrides="," >
          <choose>
            <when test="item.uid !=null and item.uid != ''">
                 #{item.uid,jdbcType=VARCHAR},
            </when>
            <otherwise>
                md5(uuid()),
            </otherwise>
          </choose>
          #{item.mId,jdbcType=INTEGER},
          #{item.name,jdbcType=VARCHAR},
          #{item.isSelected,jdbcType=VARCHAR}
      </trim>
    </foreach>
        on duplicate key update 
            m_id= VALUES(m_id),
            name=VALUES(name),
            is_selected=VALUES(is_selected)
  </insert>