概述
MyBatis用if过滤不传值判空
问题描述:
-
Mybaits使用if过滤,查询条件为空的时候,数据集合中的数据将status=1的数据过滤掉了
-
之前遇到的问题链接:2021-02-23遇到的问题.
分析:
我的查询条件param为空时,因为status为int默认为0,
等价于status=0,过了status != null的判断
{
"pageNum": 1,
"pageSize": 15,
"param":{}
}
因此以status=0为条件过滤了数据,只显示status为0的数据,而且在param中使用"status":1查询还能查出status=1的数据
解决:
<if test=" status != 0 " >
将status字段原本的0改为-1,所以 int/integer要注意0的使用
或者将int改为integer
注:
参考:int的默认值为0,而Integer的默认值为null.
Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。
int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。
最后
以上就是个性钢笔为你收集整理的MyBatis用if过滤不传值判空的全部内容,希望文章能够帮你解决MyBatis用if过滤不传值判空所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复