按照老师的方法测试updateShouse(),按理应该只会修改非空项,没有键入新值的应该保持不变,但我的数据表update后double和int类型的字段都变成了0,其他类型的就正常。为何??
代码如下面截图:
mapper.ShouseDao.xml :
ShouseDaoTest.java :
mysql :
好吧,最后这个问题还是让我这个当事人自己解决了。
原因: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 转换成字符串,否则会出错。
如图: