关于MYSQL进行insert操作时,存在则更新不存在则插入的解决办法
2018-01-17 20:19
399 查看
在项目开发中经常会遇到数据频发插入操作且需要进行判断,这样会业务层多一次判断的操作,多请求一次数据库,造成性能问题,所以采用以下办法解决了这个令人蓝瘦的问题。。。
这里是一个用户运动记录表,记录用户每天的运动时间,走的路程,消耗的能量和走的步数,前台是定时一分钟向后台发送一次用户的数据,在后天里进行数据保存,数据库中我们只需要根据用户ID和时间来多次更新这些数据就可以保存当前用户一天的数据
这样就OK了。
这里是一个用户运动记录表,记录用户每天的运动时间,走的路程,消耗的能量和走的步数,前台是定时一分钟向后台发送一次用户的数据,在后天里进行数据保存,数据库中我们只需要根据用户ID和时间来多次更新这些数据就可以保存当前用户一天的数据
![](https://img-blog.csdn.net/20180117201215389?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU3lzdGVtX291dF9wcmludF9Cb3k=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 假如第一次传来用户的数据,我们只需要判断当前用户ID和当天的时间去数据库查询有没有这个字段,有了就进行更新操作,没有进新增一条数据记录用户今天的数据。 记得在这个RecordStep实体类中加一个count字段(int类型),mapper如下:
<insert id="insertStep" useGeneratedKeys="true" keyProperty="id" parameterType="RecordStep"> <selectKey keyProperty="count" resultType="int" order="BEFORE"> select count(*) as count from tj_record_step where CREATEBY=#{createBy} and USER_ID=#{userId} </selectKey> <!--如果不存在创建 --> <if test="count==0"> INSERT INTO tj_record_step ( <include refid="SRecordColumns" /> )VALUES( #{userId}, #{actualTime}, #{actualEnergy}, #{actualMileage}, #{actualStep}, NOW(), NOW() ) </if> <!--如果存在,更新时间 --> <if test="count > 0"> UPDATE tj_record_step SET UPDATEBY=NOW() <if test="actualTime !=null and actualTime !=''"> ,ACTUAL_TIME=#{actualTime} </if> <if test="actualEnergy !=null and actualEnergy !=''"> ,ACTUAL_ENERGY=#{actualEnergy} </if> <if test="actualMileage !=null and actualMileage !=''"> ,ACTUAL_MILEAGE=#{actualMileage} </if> <if test="actualStep !=null and actualStep !=''"> ,ACTUAL_STEP=#{actualStep} </if> WHERE USER_ID=#{userId} </if> </insert>
这样就OK了。
相关文章推荐
- mysql 如果不存在则插入(insert) 如果存在则更新(update)
- MySQL insert 存在则更新,不存在则插入
- mysql学习总结一当数据不存在的时候插入,存在的时候进行更新,删除重复数据
- Mysql 插入记录时检查记录是否已经存在,存在则更新,不存在则插入记录SQL
- MySql_插入记录时,存在就更新(或不做任何动作),不存在就添加
- Mysql 不存在则插入,存在则更新
- MySQL 记录不存在时插入 记录存在则更新的实现方法
- MySQL 记录不存在时插入 记录存在则更新的实现方法
- mysql如何实现插入时如果不存在则插入如果存在则更新的操作?
- mysql 不存在则插入,存在则更新字段
- 如何实现插入时如果不存在则插入如果存在则更新的操作(分别用oracle、MySQL和SQL Server实现)
- mysql 存在该记录则更新,不存在则插入记录的sql
- 关于ADO.Net使用TableAdapter时产生:更新要求有效的deletecommand或update,insert,selectcommand的解决办法,以及“违反并发性”处理
- mysql的两个技巧(key记录存在则替换,不存在则插入和key记录存在则更新,不存在则插入)
- 黄聪:mysql 存在该记录则更新,不存在则插入记录的sql
- MySQL 记录不存在时插入 记录存在则更新的实现方法
- MYSQL 数据表中行存在时更新,不存在时插入的SQL语句
- MySQL记录存在则更新,不存在则插入
- mysql 存在更新 不存在插入
- mysql和sqlserver存在就更新,不存在就插入的写法