<insert id="insertOrUpdate" parameterType="XXXX" useGeneratedKeys="true"
keyProperty="id">
<include refid="insertSql"/>
on duplicate key update
<trim suffixOverrides=",">
<include refid="updateSql"/>
</trim>
</insert>
注意 配置 useGeneratedKeys="true" keyProperty="id"
on duplicate key update 存在即修改。但是當修改時,數據庫中沒有字段值變化,即返回的影響行爲0時,這時是不返回主鍵的
不返回主鍵
返回主鍵
所以要確保一定有主鍵返回,就必須讓mysql有影響行
on duplicate key update 修改時如果原值保存,就不能確保一定有字段值更新,就不保證一定有影響和,做好就是加上更新時間字段,每次帶上。updated_at = NOW(); 最爲合適
請不要依賴Mysql datetime的 修改自動填入值 (ON UPDATE CURRENT_TIMESTAMP),因爲影響行依然爲0;