运行环境: Mybatis + Oracle
问题描述:状态字段statusFlag 使用的是number类型,对应的java 类型使用的是Integer,页面上作为查询条件,有个数值为0,这时候传递到后台进行查询的时候是筛选不出数据。
后台Mybatis的判断为
<if test="statusFlag != null and statusFlag != '' ">
AND STATUS_FLAG = #{statusFlag,jdbcType=DECIMAL}
</if>
问题原因就是当statusFlag 的值为0的时候,因为其数据类型为Integer,所以这个判断是为false的,就是说int类型的判断,Mybatis是认定0为’'的,所以为false。
解决办法是去掉空串的判断
<if test="statusFlag != null">
AND STATUS_FLAG = #{statusFlag,jdbcType=DECIMAL}
</if>