前提:一般执行update语法和insert语法时,都会用到if test的标签,动态条件来执行。
然后刚开始的时候发现,double类型字段if test标签也是写成了 <if test="xxx != null and xxx !=' ' "> 这个时候发现,当更新语法时,这个字段没有传入值时,被默认的改成0。
然后去搜索资料,说写成这种形式即可,<if test="xxx != null and xxx !=' ' or xxx != 0 "> 这样确实可以保证,当不传入xxx这个值时,不会去改动,不会变成0。
但是后来问题来了,当需要这个字段更新成0时,用这种就执行不了,查了好多资料,基本都不行。后来发现,在实体类中将这double 和 int 类型字段改成包装类即可。
包装类即将这些字段改成Object类型,因为8大数据类型不具备面向对象的功能,同String一样判断 把double改成DOUBLE,把int改成Integer即可,然后
<if test="xxx != null "> 只需判断不等于null就可以完美解决。最后附上8大基本数据类型对应的包装类
| 基本数据类型 | 对应的包装类 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| char | Character |
| float | Float |
| double | Double |
| boolean | Boolean |
MyBatis ifTest与包装类使用技巧
本文探讨了在MyBatis中使用ifTest标签处理double和int类型字段时遇到的问题,以及如何通过改用包装类如Double和Integer解决更新为0的难题。
1万+

被折叠的 条评论
为什么被折叠?



