前言
在Java开发中,会出现一些常见且通用的业务逻辑. 毫无疑问,上述业务逻辑的解决方法将其抽象为一个工具类方法是常见的思路.这样既可以提升代码的复用性, 也可以提升代码的可维护性!
参数中的某些字段为空的校验方法
源码:
/**
* 仅仅以下字段内容不能为空
* @param entity 实体
* @param excludeFields 字段
*/
public static <T> void thisAloneIsNotEmpty(T entity, String... excludeFields) {
// 仅仅以下字段内容不能为空
String fields = checkNullFields(entity, false, excludeFields);
if (StringUtils.isNotBlank(fields)) {
throw new ServiceException(ResultCode.PARAMS_NULL, fields);
}
}
/**
* 检查空字段
* @param entity 实体
* @param flag 是排除 否仅过滤该字段
* @param excludeFields 字段名
* @return 返回拼接后的空字段
*/
public static <T> String checkNullFields(T entity, boolean flag, String... excludeFields) {
Class<?> clazz = entity.getClass();
Field[] fields = clazz.getDeclaredFields();
// List<String> excludeList = Arrays.asList(excludeFields);
List<String> excludeList = new ArrayList<>();
// 下划线转驼峰
for (String excludeField : excludeFields) {
String hump = upperTable(excludeField);
excludeList.add(hump);
}
// 错误集合
LinkedList<String> list = new LinkedList<>();
for (Field field : fields) {
if (flag) {
if (excludeList.contains(field.getName())) {
continue;
}
try {
field.setAccessible(true);
Object value = field.get(entity);
if (StringUtils.isBlank(value)) {
list.add("Field " + field.getName() + " is null");
}
} catch (IllegalAccessException e) {
list.add("Field " + field.getName() + " error");
}
} else {
if (excludeList.contains(field.getName())) {
field.setAccessible(true);
try {
Object value = field.get(entity);
if (StringUtils.isBlank(value)) {
list.add("Field " + field.getName() + " is null");
}
} catch (IllegalAccessException e) {
list.add("Field " + field.getName() + " error");
}
}
}
}
return String.join(",", list);
}
/**
* 下划线转驼峰
*/
public static String upperTable(String str) {
StringBuilder result = new StringBuilder();
String[] a = str.split("_");
for (String s : a) {
if (!str.contains("_")) {
result.append(s);
continue;
}
if (result.length() == 0) {
result.append(s.toLowerCase());
} else {
result.append(s.substring(0, 1).toUpperCase());
result.append(s.substring(1).toLowerCase());
}
}
return result.toString();
}
标签:excludeFields,String,--,list,entity,field,result,更新版,中自建
From: https://www.cnblogs.com/xiusong/p/17958664