一、问题
今日写业务,分页查询使用 warpOPDefaultLike(xxxSearchDTO).build() 方法,在控制台打印出来的sql语句结尾莫名加上了 “where state=0” 的条件,这是xxxSearchDTO中的一个属性,前端传参为null,为什么sql语句查询时会赋值0呢?
经排查,发现是 xxxSearchDTO 对应的 xxxDAO 实体类的对应的那条的属性是这样的:private int state;问题就在这里,int 类型的默认值为0,此处应该采用 Integer ,封装类,Integer的默认值为 null ,改为Integer后QueryMapper要搜索的其值就不是0了而是null,即全查,而不是查0。
新手路上的又一次踩坑,学过,也记得,但是实战中就是想不到这点上去,因为知识点太基础了,越基础反而越容易被忽略。
总结
实体类的数据类型使用封装类,如 Integer 而非 int