Integer类型的参数为0时的查询异常解决

Springboot项目,参数为Integer类型,当参数为0时,查询结果异常解决:

Controller:

@RequestMapping(value = "/findTappeal", method = RequestMethod.GET)
    public Page<TappealVo> getTappeal(Integer pageNo, Integer pageSize, String mobile_old,   String farm_name, Integer status)

Mapper:

@Select("<script> select * from t_appeal " +  " where 1=1 "
            + "<if test=\" mobile_old!=null and mobile_old !='' \" > and mobile_old like '%${mobile_old}%' " + "</if>"
            + "<if test=\" farm_name!=null and farm_name !='' \" > and farm_name like  '%${farm_name}%' " + "</if>"
            + "<if test=\" status!=null and status !='' \">  and status=#{status}" + "</if>"
            + " order by createtime limit #{pageNo},#{pageSize}"
            + " </script>")
    List<Tappeal> getTappeal(@Param("pageNo")Integer pageNo,@Param("pageSize") Integer pageSize,
                             @Param("mobile_old")String mobile_old,@Param("farm_name")String farm_name,
                             @Param("status")Integer status);

当status为 1,2 时查询结果没问题,当status为0时,查询结果为所有(status为0,1,2的所有情况)。
因为status为Integer类型,所以为0时,默认为null,所以会查出所有结果。

解决方法:

	加一条判断即可解决:
 @Select("<script> select * from t_appeal " +  " where 1=1 "
            + "<if test=\" mobile_old!=null and mobile_old !='' \" > and mobile_old like '%${mobile_old}%' " + "</if>"
            + "<if test=\" farm_name!=null and farm_name !='' \" > and farm_name like  '%${farm_name}%' " + "</if>"
            + "<if test=\" status!=null and status !='' \">  and status=#{status}" + "</if>"
            + "<if test=\"  status==0 ? '0' : status \">  and status= #{status}" + "</if>"
            + " order by createtime limit #{pageNo},#{pageSize}"
            + " </script>")

版权声明:本文为jiacan_2018_8_17原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。