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判断:
仔细看了下这段代码,然后又去数据库看了一下数据类型,发现问题出在“deviceIP!=null”这点,因为IP的数据类型是整数型,而TimeSlot的数据类型是字符串,所以不应该是null而是deviceIP!=0,修改之后就可以了。
<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,修改之后就可以了。
相关文章推荐
- spring多数据源的处理 mybatis实现跨库查询 实现Myibatis动态sql跨数据库的处理 Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样
- Mybatis二级缓存关于多表关联时修改被关联表数据,缓存没清空的问题
- postgre数据库修改使主键自动增加(针对其他sql导出来的数据)
- 修改MyBatis 源代码,实现数据库分页及Object[]数据结果
- Sql 清空数据库表的数据语句
- 在VB.NET中 用代码 利用SQL语句创建数据库、表、存储过程、视图、索引、规则、修改表、查看数据等的方法
- 修改数据表及数据库联机脱机的SQL语句
- 动态连接数据库的配置问题 ACCESS +SQL 2000
- mysql中修改数据库,数据库表,数据库表字段的编码问题
- s2sh向数据库插入数据,控制台有打印sql语句,数据库查询不到数据问题
- sql编程 存储过程 之 动态添加数据库表列并更新数据库表数据
- SQL 清空数据库的所有表数据
- 清空一个数据库中所有表的数据的sql语句
- SQL 清空数据库数据方法
- sql 折分字符串并修改数据库表中数据
- SQL 清空数据库的所有表数据
- .Net下批量删除数据的存储过程问题(用动态SQL )
- SQL:清空数据库所有数据
- 使用SQL语句清空数据库所有表的数据
- 使用SQL语句清空数据库所有表的数据