我是靠谱客的博主 个性钢笔,最近开发中收集的这篇文章主要介绍MyBatis用if过滤不传值判空,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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过滤不传值判空所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部