MyBatis把传过来的Integer类型的0当作空字符串

分手后的思念是犯贱 2022-05-18 09:36 247阅读 0赞

今天controller传了一个Integer类型值为0,但返回结果却跟数据库查询结果不一致,结果经过排查,发现在mapper.xml中是不起作用。

原因分析:传递Integer类型的值,如果传递的是0,到mybatis的mapper的xml文件中是把值当作空字符串,mybatis源码对其进行了强制定义。

解决方法:在if判断条件中加上 or _parameter==0,_parameter表示当前参数

  1. <!-- 车位总数 -->
  2. <select id="selectCount" resultType="java.lang.Integer"
  3. parameterType="java.lang.Integer">
  4. select count(1)
  5. from t_space
  6. <where>
  7. <if test="_parameter !=null and _parameter !='' or _parameter==0 ">AND ps_state = #{_parameter}</if>
  8. </where>
  9. </select>

此时,问题解决,可以查到为0状态的总数。

#

我的座右铭:不会,我可以学;落后,我可以追赶;跌倒,我可以站起来;我一定行。

发表评论

表情:
评论列表 (有 0 条评论,247人围观)

还没有评论,来说两句吧...

相关阅读