您的位置:首页 > 数据库

mybatis中修改数据库单一数据时,连带清空其他数据的问题【动态sql】

2017-09-05 16:24 363 查看
最近用mybatis对数据库进行增删改查操作的时候,遇到了一个问题,困扰了多时,就是每次进行数据库单一信息修改操作的时候,总是会把别的信息一同清除了。

<update id="updateDevice" parameterType="DeviceInterface">
update deviceinfo
set deviceIP=#{deviceIP},
deviceTimeSlot=#{deviceTimeSlot},
where deviceID =#{deviceID}
</update>
这是最开始的mapper,里面update没有添加if判断,所以就会造成来带清除数据的问题。

之后我添加了if判断:

<update id="updateDevice" parameterType="DeviceInterface">
update deviceinfo
<trim prefix="set" suffixOverrides=",">
<if test="deviceIP!=null">deviceIP=#{deviceIP},</if>
<if test="deviceTimeSlot!=null">deviceTimeSlot=#{deviceTimeSlot},</if>
</trim>
where deviceID =#{deviceID}
</update>
现在当修改deviceIP的时候deviceTimeSlot不再会被清除为null,但是却发现单独修改deviceTimeSlot的时候,IP依然会被清零。

仔细看了下这段代码,然后又去数据库看了一下数据类型,发现问题出在“deviceIP!=null”这点,因为IP的数据类型是整数型,而TimeSlot的数据类型是字符串,所以不应该是null而是deviceIP!=0,修改之后就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: