java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Mybatis对于int类型的参数

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

三、建议

像这种码值操作最好还是使用字符串类型数据比较好。

四、总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文