MyBatis把传过来的Integer类型的0当作空字符串
今天controller传了一个Integer类型值为0,但返回结果却跟数据库查询结果不一致,结果经过排查,发现在mapper.xml中是 不起作用。
原因分析:传递Integer类型的值,如果传递的是0,到mybatis的mapper的xml文件中是把值当作空字符串,mybatis源码对其进行了强制定义。
解决方法:在if判断条件中加上 or _parameter==0,_parameter表示当前参数
<!-- 车位总数 -->
<select id="selectCount" resultType="java.lang.Integer"
parameterType="java.lang.Integer">
select count(1)
from t_space
<where>
<if test="_parameter !=null and _parameter !='' or _parameter==0 ">AND ps_state = #{_parameter}</if>
</where>
</select>
此时,问题解决,可以查到为0状态的总数。
还没有评论,来说两句吧...