Mybatis对于int类型的参数问题及解决过程
一、Mybatis对于int类型的参数值为0的判断给空
状态字段statusFlag 使用的是int类型,对应的java 类型使用的是Integer,页面上作为查询条件,有个数值为0,这时候传递到后台进行查询的时候是筛选不出数据。
后台Mybatis的判断为
<if test="statusFlag != null and statusFlag != '' ">
AND STATUS_FLAG = #{statusFlag}
</if>问题原因
当statusFlag 的值为0的时候,因为其数据类型为Integer,所以这个判断是为false的,就是说int类型的判断,Mybatis是认定0为''的,所以为false
解决办法
是去掉空串的判断
<if test="statusFlag != null">
AND STATUS_FLAG = #{statusFlag}
</if>二、查询MySql的int类型字段默认返回0
问题原因
当数据库中这个字段没有值时,查询结果返回的值默认为 0
解决办法
修改实体类字段的数据类型,将 long 修改为 Long,即修改为包装类
private Long cId;
包装类:
long -> Long, int -> Integer, short -> Short, byte -> Byte
三、建议
像这种码值操作最好还是使用字符串类型数据比较好。
四、总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java为啥能跨平台(原因解析)JDK/JRE/JVM的关系说明
JVM是Java虚拟机,是Java程序的运行环境,Java的跨平台特性是由于JVM的适配性设计,JDK、JRE、JVM三者的关系是JDK> JRE > JVM,本文介绍Java为啥能跨平台,JDK/JRE/JVM的关系说明,感兴趣的朋友一起看看吧2025-12-12


最新评论