首页 新闻 会员 周边

java 一个关于判空的问题

0
悬赏园豆:20 [已解决问题] 解决于 2023-06-13 16:11

目前还未工作,比较疑惑的一个点

在service层进行参数校验,如果是一个字段很多的javabean如何优雅的对其中的字段判null,对其中的字符串判空呢。
还有各位平常在工作场景中,是对所有参数进行参数校验还是有别的依据呢。

这个问题感觉不算问题,但是导致写代码的时候束手束脚的,总考虑是不是还有参数没有判断。
希望各位前辈能够帮助我解决这个问题。

*三井寿*的主页 *三井寿* | 初学一级 | 园豆:35
提问于:2023-06-13 10:56
< >
分享
最佳答案
0

在 Java 中,可以使用 Java 8 中的 Stream API 来优雅地判断一个 JavaBean 中的字段是否为 null 或字符串是否为空。
假设有一个名为 User 的 JavaBean,其中包含多个字段,例如 id、name、email 等。可以使用以下代码来判断其中的字段是否为 null 或字符串是否为空:

User user = new User();  
user.setId(1L);  
user.setName(null);  
user.setEmail("example@gmail.com");  
  
List<String> nullFields = Arrays.stream(user::getters)  
    .filter(Objects::isNull)  
    .collect(Collectors.toList());  
  
List<String> emptyFields = Arrays.stream(user::getters)  
    .filter(String::isEmpty)  
    .collect(Collectors.toList());

其中,user::getters 表示获取 User 类中的所有可枚举属性,Objects::isNull 和 String::isEmpty 分别表示判断属性是否为 null 或空字符串。最后将结果收集到 List 中返回。
对于参数校验的问题,通常需要根据具体业务场景和需求来决定是否进行参数校验。一般来说,对于一些敏感的操作,例如修改密码、删除用户等操作,需要进行参数校验,以确保用户输入的数据合法且符合业务要求。而对于一些简单的查询操作,则通常不需要进行参数校验。此外,也可以根据具体需求对不同类型的参数进行不同的校验,例如对密码需要进行加密存储等。

收获园豆:20
lanedm | 老鸟四级 |园豆:2381 | 2023-06-13 11:15

我懂您的意思了,你看我这样想对不对,可以参照表的约束,以及字段的关键性来判断某字段是否需要参数校验

*三井寿* | 园豆:35 (初学一级) | 2023-06-13 11:25

@三井寿: 虽然可以通过数据库字段约束判断,但是换一种数据库就要重新写一遍,例如oracle换mssql,最好通过实体类的特性判断,这样的代码可以跨数据库使用,国内正推进国产数据库的应用,代码最好不要跟数据库字段绑定,万一要换达梦数据库呢

lanedm | 园豆:2381 (老鸟四级) | 2023-06-13 11:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册