1.当后端接口一个实体类之前未进行非空判断时,如果我们对其属性值一个一个进行
非空判断显得冗余和重复,如下:
public R addFileInfo(@RequestBody User user){
if(StringUtils.isBlank(user.getId())){
return R.error("id不能为空");
}
if(StringUtils.isBlank(user.getName())){
return R.error("name不能为空");
}
if(StringUtils.isBlank(user.getSex())){
return R.error("sex不能为空");
}
return R.ok();
}
2.可以直接写一个utils类进行校验
package com.goldenhome.modules.filetable.utils;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class CheckParametersUtil {
Map<String, Object> map = new HashMap<>();
/**
* 添加需要校验的参数
* @param object 实参
* @param parameterName 参数名称
* @return CheckParametersUtil
* @author: XuWei
*/
public CheckParametersUtil put(Object object, String parameterName) {
map.put(parameterName, object);
return this;
}
/**
* 获取CheckParametersUtil实例
* @return CheckParametersUtil
* @author: XuWei
*/
public static CheckParametersUtil getInstance(){
return new CheckParametersUtil();
}
/**
* 校验
* @return DataMessage
* @author: XuWei
* @throws Exception
*/
public void checkParameter() throws Exception {
for(Entry<String, Object> entry : map.entrySet()) {
if(isEmptyTrim(entry.getValue())){
throw new Exception("参数【" + entry.getKey() + "】为空" );
}
}
}
public String toString(Object object) {
return object == null ? "" : object.toString();
}
public boolean isEmpty(Collection collection) {
return collection == null || collection.isEmpty();
}
public boolean isEmpty(Map map) {
return map == null || map.isEmpty();
}
public boolean isEmpty(String string) {
return toString(string).isEmpty();
}
public boolean isEmptyTrim(String string) {
return toString(string).trim().isEmpty();
}
public boolean isEmpty(Object object) {
return toString(object).isEmpty();
}
public boolean isEmptyTrim(Object object) {
return toString(object).trim().isEmpty();
}
public <T> boolean isEmpty(T[] array) {
return array == null || array.length == 0;
}
}
使用utils类进行校验
public R addFileInfo(@RequestBody User user){
try {
CheckParametersUtil.getInstance()
.put(user.getId(),"id") //左边的是参数值,右边是参数名称
.put(user.getName(),"name")
.put(user.getSex(),"sex")
.checkParameter();
return R.ok();
}catch (Exception e){
return R.error(e.getMessage());
}
}
结果(如果name为空)
{
"msg": "参数【name】为空",
"code": 500,
"success": false
}