问答详情
源自:3-6 dao层开发

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

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

代码如下面截图:

mapper.ShouseDao.xml :

https://img2.mukewang.com/5c9e383900014f7405600245.jpg


ShouseDaoTest.java :

https://img1.mukewang.com/5c9e38390001f00403990143.jpg


mysql :

https://img2.mukewang.com/5c9e38390001c9c211020419.jpg


提问者:Barbarianray 2019-03-29 23:23

个回答

  • Barbarianray
    2019-03-31 10:27:49

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

    原因: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.mukewang.com/5ca0257a0001a2d005470249.jpg