1、利用Java反射技術 判斷傳入實體的屬性值是否爲空
/**
* @author wyy
* @version 1.0
* @date 2019/7/19 16:52
* @description 實體屬性遍歷工具
**/
public class EntityTraversalUtils {
/**
* 傳入實體可以對實體屬性進行遍歷
* 判斷實體屬性是否爲空
*
* @param model
* @return
*/
public static Boolean judgeClassmentsIsNull(Object model) {
// model換成需要遍歷的實體
// 獲取實體類的所有屬性,返回Field數組
Field[] field = model.getClass().getDeclaredFields();
try {
// 遍歷所有屬性
for (int j = 0; j < field.length; j++) {
// 獲取屬性的名字
String name = field[j].getName();
// 將屬性的首字符大寫,方便構造get,set方法
name = name.substring(0, 1).toUpperCase() + name.substring(1);
// 獲取屬性的類型
String type = field[j].getGenericType().toString();
// 如果type是類類型,則前面包含"class ",後面跟類名
if ("class java.lang.String".equals(type)) {
Method m = model.getClass().getMethod("get" + name);
// 調用getter方法獲取屬性值
String value = (String) m.invoke(model);
if (value == null || "".equals(value)) {
return false;
}
}
if ("class java.lang.Integer".equals(type)) {
Method m = model.getClass().getMethod("get" + name);
Integer value = (Integer) m.invoke(model);
if (value == null) {
return false;
}
}
if ("class java.lang.Boolean".equals(type)) {
Method m = model.getClass().getMethod("get" + name);
Boolean value = (Boolean) m.invoke(model);
if (value == null) {
return false;
}
}
if ("class java.util.Date".equals(type)) {
Method m = model.getClass().getMethod("get" + name);
Date value = (Date) m.invoke(model);
if (value == null) {
return false;
}
}
if ("class java.math.BigDecimal".equals(type)) {
Method m = model.getClass().getMethod("get" + name);
BigDecimal value = (BigDecimal) m.invoke(model);
if (value == null) {
return false;
}
}
if ("java.util.List<com.djcps.manage.supplier.line.model.LinePaperSizeModel>".equals(type)) {
Method m = model.getClass().getMethod("get" + name);
List value = (List) m.invoke(model);
if (value.size() == 0) {
return false;
}
}
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return true;
}
}