为了账号安全,请及时绑定邮箱和手机立即绑定

求解!update数据后double和int类型的字段都变成0

按照老师的方法测试updateShouse(),按理应该只会修改非空项,没有键入新值的应该保持不变,但我的数据表update后double和int类型的字段都变成了0,其他类型的就正常。为何??

代码如下面截图:

mapper.ShouseDao.xml :

https://img1.sycdn.imooc.com//5c9e383900014f7405600245.jpg


ShouseDaoTest.java :

https://img1.sycdn.imooc.com//5c9e38390001f00403990143.jpg


mysql :

https://img1.sycdn.imooc.com//5c9e38390001c9c211020419.jpg


正在回答

1 回答

好吧,最后这个问题还是让我这个当事人自己解决了。

原因:double 和 int 类型的变量不能直接用 !=null 来判断是否为空,当这两种类型的变量没有键入值(也就是为空时),会默认赋为0,所以会出现update数据后double和int类型的字段的值都变成0的情况。

解决:只要在mapper 里 的 .xml文件中所有double和int类型的字段(具体要看相应的数据表)用<if test="xxx>0">替代<if test="xxx !=null"> 即可达到相同效果。

注意,此处的<if test=" ">里不能用String.valueOf( ) 来把int 或 double 转换成字符串,否则会出错。

如图:

https://img1.sycdn.imooc.com//5ca0257a0001a2d005470249.jpg


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求解!update数据后double和int类型的字段都变成0

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信