ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Map获取String判断空值问题

2022-07-28 20:34:30  阅读:193  来源: 互联网

标签:Map String get 空值 catelogId params println null


今天在写一个开源项目的时候遇到一个问题,为了图省事我直接在接口上用Map接受前端发送过来的数据,之后再一一解析,其中有一些参数我需要判断是否为空或0(为空就是前端传递undefined情况),最开始的想法是做containskey判断,但是要判断的数据还不少,为了偷懒而且写那么多if代码也不好看,所以我就用LamdaQueryWrapper在获取值的时候判断条件是否成立,下面是我的写法

String brandId = String.valueOf(params.get("brandId"));
String status = String.valueOf(params.get("status"));
String catelogId = String.valueOf(params.get("catelogId"));
wrapper.eq(!StringUtils.isEmpty(status),
                        SpuInfoEntity::getPublishStatus, params.get("status"))
                .eq(brandId != null && !"0".equals(brandId), SpuInfoEntity::getBrandId,
                        params.get("brandId"))
                .eq(catelogId != null && !"0".equals(catelogId), SpuInfoEntity::getCatalogId,
                        params.get("catelogId"));

一开始我觉得我的代码逻辑上没有问题,但是一启动项目做测试就发现问题了,模糊查询(前端传递undefined)的情况下查不出来数据,我看了日志打印的sql,查询的时候加上了对catalog_id等数据的条件判断,我以为是我逻辑上出现了问题,但是一复盘确实不应该出现这样的结果,所以我想应该是条件判断语句出现了问题,于是我做了测试

        System.out.println(params.get("catelogId"));
        System.out.println(params.get("catelogId") != null);
        System.out.println(String.valueOf(params.get("catelogId")));
        System.out.println(String.valueOf(params.get("catelogId")) != null);
        System.out.println((String) params.get("catelogId"));
        System.out.println((String) params.get("catelogId") != null);
        System.out.println(catelogId != null);
        System.out.println(!"0".equals(catelogId));
        System.out.println(catelogId != null && !"0".equals(catelogId));

上述语句输出结果如下

null
false
null
true
null
false
true
true
true

问题就出现在String.valueOf上,点击去其实就能看到这里是做了空值判断,如果为空就赋值“null”,所以 String.valueOf(params.get("catelogId")) 不是null对象而是“null”字符串对象,正常强转成String对象的就不存在这个问题

 

标签:Map,String,get,空值,catelogId,params,println,null
来源: https://www.cnblogs.com/Cra2iTeT/p/16530112.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有