看以下代码
第一次修改某一条数据:
prodMapper.updateByPrimaryKeySelective(pojo);
pojo中的属性heartbeat是不为空的
sql如下:
update t_prod <set> ..................................... <if test="heartbeat !=null"> heartbeat = #{heartbeat,jdbcType=INTEGER}, </if> </set> where prodNo = #{prodNo,jdbcType=VARCHAR}
当前判断的是这个属性heartbeat是否为null ,当然第一条我写的sql主要是为了修改heartbeat属性,这个时候修改完成以后数据库是有数据的
当代码还没有运行完以后我们又进行了一次修改数据,
prodMapper.updateByPrimaryKeySelective(pojo2);
发现运行完这一行代码以后,数据库的heartbeat属性居然为空了!!
找到代码才发现第二条数据的heartbeat属性是为null,再看看我们的pojo类的定义
private int heartbeat;
原因:int默认值为0.所以第二次的修改set中判断条件不为null条件成立,所以一直为0,这时候我们修改类型为包装类Integer(因为Integer默认值就是为null)
版权声明:本文为weixin_44806939原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。