美文网首页
当记录不存在时insert/当记录存在时update

当记录不存在时insert/当记录存在时update

作者: _花 | 来源:发表于2022-04-09 15:35 被阅读0次

    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>
    

    相关文章

      网友评论

          本文标题:当记录不存在时insert/当记录存在时update

          本文链接:https://www.haomeiwen.com/subject/fvupsrtx.html