美文网首页
MyBatis Plus实现注解式插入或更新

MyBatis Plus实现注解式插入或更新

作者: 静美书斋 | 来源:发表于2022-09-29 10:28 被阅读0次

    场景

    在进行数据插入时,需要根据唯一索引(有时是联合索引,联合索引确定唯一一条记录)进行插入数据,当有更新的数据到来时,能及时更新已保存的记录数据;以往的经验是,根据唯一索引,先查询一下,是否有该条记录,如果有,更新指定字段值后,再进行一次updateById操作,以下介绍一种insertOrUpdate方式,实现插入或更新功能,即当新插入的数据已存在时,进行指定字段更新操作。

    实现

        /**
         * 插入或更新任务状态信息
         * key值:task_name,status(需要在数据库中将这两字段标注为唯一索引)
         *
         * @param entity 待插入或更新的实体
         * @return 返回影响的记录数
         */
        @Insert("<script>" +
                " INSERT INTO a_hotspot_task_status(task_name_parent,task_name,mode_type,status,status_msg,finish_time,handle_node_code,task_length,bandwidth) VALUES " +
                " (#{entity.taskNameParent},#{entity.taskName},#{entity.modeType},#{entity.status},#{entity.statusMsg},#{entity.finishTime},#{entity.handleNodeCode},#{entity.taskLength},#{entity.bandwidth})" +
                " on duplicate key update task_name = #{entity.taskName},status = #{entity.status}" +
                " </script>")
        int insertOrUpdate(@Param("entity") HotspotTaskStatus entity);
    

    说明

    • 由于是根据唯一索引进行确定唯一记录,所以on duplicate key update之后需要写上索引字段值,如果存在多个,逗号隔开即可
    • 在insert into 表名之后的括号内,需要写明字段列表(指定字段插入或更新字段)

    相关文章

      网友评论

          本文标题:MyBatis Plus实现注解式插入或更新

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