Mybatis 有则更新,无则插入的实现

想插入数据库一条记录,如果这条记录的主键或者Unique键已存在,则更新这条记录,如果主键或Unique键不存在,则新增这条记录。用Mybatis实现。网上有些方法说用replace into,但是mybatis是不支持的。所以,必须使用ON DUPLICATE KEY UPDATE。

parameterType="com.foreigners.entity.User">
insert INTO
t_user(openId, name, gender, phoneNumber)
VALUES
(#{openId},#{name},#{gender},#{phoneNumber})
ON DUPLICATE KEY UPDATE
name = #{name},
gender = #{gender},
phoneNumber = #{phoneNumber}

这段代码里,openId是Unique键。