正常情况下,我们接收到传入的值才会做进一步的条件筛选,如下:
<if test="publishStatus != null and publishStatus != ''">
and tp.publish_status = #{publishStatus,jdbcType = VARCHAR}
</if>
接收到的值不为null并且不为空字符串,才进一步拼接sql,但这样写只能针对字符串(String)类型,如果是Integer类型的话就会有问题,mybatis将ingeter类型为0的值也认定为空字符串,就造成了拼接sql的语句未执行。
处理方法: 如果类型为Integer类型,我就去掉 != ”的判断,只判断!=null即可。