Map获取String判断空值问题
2022/7/28 23:24:26
本文主要是介绍Map获取String判断空值问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今天在写一个开源项目的时候遇到一个问题,为了图省事我直接在接口上用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判断空值问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解
- 2024-11-25Java对接阿里云智能语音服务资料详解
- 2024-11-25JAVA副业资料:新手入门及初级提升指南
- 2024-11-25Java副业资料:入门到实践的全面指南
- 2024-11-25Springboot应用的多环境打包项目实战
- 2024-11-25SpringBoot应用的生产发布项目实战入门教程
- 2024-11-25Viite多环境配置项目实战:新手入门教程
- 2024-11-25Vite多环境配置项目实战入门教程