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版权协议,转载请附上原文出处链接和本声明。