Mybatis对于int类型的参数问题及解决过程
作者:Shelly0307
Mybatis参数传递与数据库查询中int类型问题分析及解决,探讨int类型在Mybatis中与数据库查询时的误判问题因及解决办法,并提出优化建议
一、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
三、建议
像这种码值操作最好还是使用字符串类型数据比较好。
四、总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
