如果是字符串属性则不为null和不为""

有时候,controller参数接收json对象,我们需要判断该对象中的属性值是否都不为空(都是必须的)/至少有一个属性值不为空,其中字符串属性不为null和不为“”,如果对象参数多,controller里面遍历每一个属性去判断,代码冗余。

当然还有另外的方法,比如spring框架中的注解@NotNull,@NotBlank,@Valid。

import org.springframework.util.StringUtils;import java.lang.reflect.Field;
import java.lang.reflect.Method;/*** Title:判断某个对象属性值都不为空,字符串属性不为空和不为空字符串* Description:利用类的反射获取,前提是javabean中的属性都是包装类* @author WZQ* @version 1.0.0* @date 2020/4/19*/
public class ObjIsUtil {/*** 根据属性名获取属性值*/private static Object getFieldValueByName(String fieldName, Object o) {try {String firstLetter = fieldName.substring(0, 1).toUpperCase();String getter = "get" + firstLetter + fieldName.substring(1);Method method = o.getClass().getMethod(getter, new Class[]{});Object value = method.invoke(o, new Object[]{});return value;} catch (Exception e) {return null;}}/*** 判断对象中的属性值是否都不为空,字符串属性的需要判断空字符串*/public static Boolean isAllNotNull(Object o) {//获取对象的属性数组,反射Field[] fields = o.getClass().getDeclaredFields();String name = "";for (int i = 0; i < fields.length; i++) {//属性名name = fields[i].getName();//pojos和dto含有serialVersionUID,得去掉该字段的判断if (name.equals("serialVersionUID"))continue;//当前属性名的值Object fieldValueByName = getFieldValueByName(name, o);//值为nullif (fieldValueByName == null)return false;//如果是String,判断空字符串""if (fields[i].getType().equals(String.class)){String s = (String) fieldValueByName;if (StringUtils.isEmpty(s)){return false;}}}return true;}/*** 判断对象中的属性值至少有一个不为空*/public static Boolean oneNotNull(Object o) {//获取对象的属性数组,反射Field[] fields = o.getClass().getDeclaredFields();String name = "";for (int i = 0; i < fields.length; i++) {//属性名name = fields[i].getName();//当前属性名的值Object fieldValueByName = getFieldValueByName(name, o);//如果是String,判断空字符串""if (fields[i].getType().equals(String.class)){String s = (String) fieldValueByName;if (!StringUtils.isEmpty(s)){return true;}}else{//值为nullif (fieldValueByName != null)return true;}}return false;}//    public static void main(String[] args) {//        Usertest usertest = new Usertest("1","name",1);
//        Usertest usertest1 = new Usertest("","",null);
//        Usertest usertest2 = new Usertest("1","",null);
//        Usertest usertest3 = new Usertest("1",null,1);
//        System.out.println(isAllNotNull(usertest));//true
//        System.out.println(isAllNotNull(usertest1));//false
//        System.out.println(isAllNotNull(usertest2));//false
//        System.out.println(isAllNotNull(usertest3));//false
//        System.out.println(oneNotNull(usertest));//true
//        System.out.println(oneNotNull(usertest1));//false
//    }}

判断某个对象属性值都不为空/至少有一个属性值不为空相关推荐

  1. java 合并对象中属性_Java2个对象形集合按某一个属性合并

    侃侃尔雅 不知道你说的是不是这个: package com.segmentfault.qa.java; import java.util.*; public class ListMergeTest { ...

  2. Python类与对象最全总结大全(类、实例、属性方法、继承、派生、多态、内建函数)

    目录 面向对象编程 常用术语/名词解释 抽象/实现 封装/接口 合成 派生/继承/继承结构 泛化/特化 多态 自省/反射 访问限制 私有属性和公有属性 私有方法的设置 类 创建类 声明与定义 类属性 ...

  3. mybatisplus修改单个属性_第二节 官封弼马温——类的属性

    <西游记>第2集 官封弼马温 美猴王战胜了混世魔王,花果山上喜气洋洋,小猴们每日操演武艺,十分快乐.悟空闯入东海龙宫,向龙王索取镇海神针--如意金箍棒.这棒虽重一万三千五百斤,却大可撑天着 ...

  4. 类属性、类方法;私有属性、公有属性;私有方法、公有方法;静态属性、静态方法;python的命名规范__xx__\__xx\_xx(自用笔记)

    Ⅰ.类属性.类方法(类和实例都能调用类属性和类方法) 类是一个特殊的对象,Python 中 一切皆对象:class AAA: #定义的类属于 类对象obj1 = AAA() #属于 实例对象 除了封装 ...

  5. 【C语言】猜随机数小游戏(知识点:如何产生一个随机值)

    主要思想:建立一个函数打印游戏菜单,建立一个函数运行游戏,在主函数中用循环重复运行. #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> ...

  6. [c#]通过一个枚举值获取另一个枚举值———通过国家全称获取国家简称

    概述:两个枚举间可通过int值进行关联,从而实现通过一个枚举值获取另一枚举值,而达到本案例中通过国家全称获取国家简称,反之亦然. 实现:直接看代码: 先定义两个枚举 public enum Count ...

  7. java 判断对象的属性是否为空,如何判断一个对象里的属性是否都为空的

    怎么判断一个对象里的属性是否都为空的 怎么判断一个对象里的属性是否都为空的,或者判断该对象是否是一个实体! ------解决方案-------------------- 引用:怎么判断一个对象里的属性 ...

  8. 使用postman传list参数,使用@RequestBody接收list对象接收不到,对象的属性值都是null

    controller层是这样写的,因为之前接收list值的时候也是这样去写的,所以这部分代码应该是对的 这个是我的实体,使用了lombok来写get和set方法. 然后使用postman传一个list ...

  9. 判断数组对象属性值是否相等

    最近做一个文件上传批量导入数据功能,但因后台返回的数据没做属性值重复处理,需要前端处理: 返回的数据结构如下: , 因项目的要求,返回来的所有值都要,所以使用数组的filter,indexOf方法并不 ...

最新文章

  1. 工业互联网平台创新发展白皮书(2018)
  2. 前向传播和反向传播_深度学习的地基模块:模型、参数、非线性、前向传播、反向偏微分
  3. 【线上分享】音频多麦盲分技术
  4. OpenCL-3-同步机制
  5. Istio 1.9 发布——重点改善 Istio 的 Day2 操作
  6. 20220104:力扣第274场周赛(下)
  7. sublime text3 sql 格式化
  8. Django入门10--admin增强
  9. 3Dmax软件安装问题解决方法
  10. python拟合二元一次函数
  11. opencapwap简要分析
  12. 小巷开店问题(第三题)
  13. 上海生活品质远不如深圳——深圳与上海比较
  14. 折扣力度自动计算器 | 财富自由必备小工具
  15. 资深HR分享:常见面试技巧,都是套路!
  16. 酒店价格、集合、文件名称
  17. Android zip文件解压缩工具类
  18. utils.py 文件的理解:一些小脚本文件
  19. 第三十九天:linux内核裁剪
  20. #软件测试之环境搭建#

热门文章

  1. 什么是嵌入式系统?什么是嵌入式操作系统?
  2. 解决word2019安装完visio变得卡顿的问题
  3. 7 张图三维组态编辑器图片,教你轻松数字孪生工厂
  4. Python主要用来做什么 它的应用大全有哪些
  5. 无需QQ密保直接修改QQ密码
  6. [CS229学习笔记] 5.判别学习算法与生成学习算法,高斯判别分析,朴素贝叶斯,垃圾邮件分类,拉普拉斯平滑
  7. 设置textarea不可拖动
  8. 打出英文名字中间那个点
  9. 软件项目管理-项目人力资源管理
  10. 三位数自动递增编号函数_Excel单元格自动填充编号、序列、18位长数字与数字+字母+数字...