【背景】实体类中定义了 Integer类型的status属性,取值有 0(停用)和 1(启用)
【问题】查询停用状态(status =0)数据时,查询出了所有数据,xml文件中的内容如下:
<if test="status !=null and status != ''">
AND Status = #{status}
</if>
【原因】MyBatis默认了 Integer类型数据值等于0时为 ""(空字符串)。
要查询全部数据时status值为null,查询启用/停用数据时值为1/0,没有必要判断是否为空字符串,因此修改后的代码如下:
<if test="status != null">
AND Status = #{status}
</if>
note:实体类要写数值类型要用 Integer 而不是int。开发中状态的取值往往为0或1,如果为int 类型,那么Java为该属性赋的默认值为0,分不清是前端传递的0还是Java赋予的默认值。