判断实体里的所有属性值,只要有一个不为空,则返回true,都为空则返回false。
package com.test.utils;
import org.apache.commons.lang.StringUtils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class EntityIsNotEmpty {
/**
* 判断实体对象是否为空
* @param object
* @return
*/
public static Boolean isNotEmptyBean(Object object) {
Boolean flag = false;
try {
if (null != object){
//得到类对象
Class<?> c = object.getClass();
//得到属性集合
Field[] fs = c.getDeclaredFields();
//得到方法体集合
Method[] methods = c.getDeclaredMethods();
//遍历属性
for (Field f : fs) {
//设置属性是可以访问的(私有的也可以)
f.setAccessible(true);
String fieldGetName = parGetName(f.getName());
//判断属性是否存在get方法
if (!checkGetMet(methods, fieldGetName)) {
continue;
}
//得到此属性的值
Object val = f.get(object);
//只要有1个属性不为空,那么就不是所有的属性值都为空
if (isNotEmpty(val)) {
flag = true;
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 判断属性值是否为null或空串。
* 借鉴org.apache.commons.lang.StringUtils同名方法
* @param object
* @return
*/
public static boolean isNotEmpty(Object object) {
return object != null && !object.equals("");
}
/**
* 拼接某属性的 get方法,set方法类似
* @param fieldName
* 参数样式可以示例为:stu_info、_stu_info、stuInfo、StuInfo
* @return String
*/
public static String parGetName(String fieldName) {
if (null == fieldName || "".equals(fieldName)) {
return null;
}
while (StringUtils.indexOf(fieldName,"_") > -1) {
//获取所有下划线之后一位,例如:stu_info_detail,返回 i,d
String charFieldName = StringUtils.substring(fieldName,StringUtils.indexOf(fieldName,"_") + 1,
StringUtils.indexOf(fieldName,"_") + 2);
fieldName = StringUtils.replace(fieldName,"_" + charFieldName, charFieldName.toUpperCase());
System.err.println(charFieldName);
}
//对第一位大写处理
fieldName = fieldName.substring(0,1).toUpperCase() + fieldName.substring(1);
return "get" + fieldName;
}
/**
* 判断是否存在某属性的 get方法
* @param methods
* @param fieldGetMet
* @return boolean
*/
public static Boolean checkGetMet(Method[] methods, String fieldGetMet) {
for (Method met : methods) {
if (fieldGetMet.equals(met.getName())) {
return true;
}
}
return false;
}
}
测试实体
package com.test.pojo;
import lombok.Data;
@Data
public class MusicPojo {
private Integer id;
private String singerName;
private String musicSize;
private String musicName;
}
测试用例
import java.lang.reflect.Field;
public class Demo{
public static void main(String[] args) {
MusicPojo musicPojo = new MusicPojo();
musicPojo.setId(1);
musicPojo.setMusicName("lost star");
musicPojo.setMusicSize("31.5M");
musicPojo.setSingerName("Grace");
Boolean flag = entityNotNull(musicPojo);
System.err.println(flag);
}