1.插入之前可以根据唯一字段判断是否数据库已经存在这条数据,如果有,则返回false,没有则返回true。
<insert id="insertUser" parameterType="com.baidu.aduhdmap.permission.mbg.model.UserModel">
insert into acl_user (id, user_name, email, memo, is_deleted, gmt_create, gmt_modified)
select #{id,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR},#{memo,jdbcType=VARCHAR}, #{isDeleted,jdbcType=TINYINT},
#{gmtCreate,jdbcType=TIMESTAMP}, #{gmtModified,jdbcType=TIMESTAMP}
WHERE not exists (select * from acl_user
where email = #{email,jdbcType=VARCHAR});
</insert>
我本地数据库版本是5.7.24运行上面的语句是OK的,但是在高版本运行会报错,高版本的话需要在where not exists ***前加
from dual
2.如果根据唯一字段email判断,数据库已有该数据,则什么都不操作直接返回true,如果没有该条数据,则插入数据库再返回true。
<insert id="insertUser" parameterType="com.baidu.aduhdmap.permission.mbg.model.UserModel">
insert into acl_user (id, user_name, email, memo, is_deleted, gmt_create, gmt_modified)
values (#{id,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR},#{memo,jdbcType=VARCHAR}, #{isDeleted,jdbcType=TINYINT},
#{gmtCreate,jdbcType=TIMESTAMP}, #{gmtModified,jdbcType=TIMESTAMP})
ON DUPLICATE KEY UPDATE email=email;
</insert>
3.如果根据唯一字段email判断,数据库已有该数据,则替换掉掉数据库现有数据,并返回true。
<insert id="insertUser" parameterType="com.baidu.aduhdmap.permission.mbg.model.UserModel">
insert into acl_user (id, user_name, email, memo, is_deleted, gmt_create, gmt_modified)
values (#{id,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR},#{memo,jdbcType=VARCHAR}, #{isDeleted,jdbcType=TINYINT},
#{gmtCreate,jdbcType=TIMESTAMP}, #{gmtModified,jdbcType=TIMESTAMP})
ON DUPLICATE KEY UPDATE email=email;
</insert>
网友评论