ModelInsMDataDao过程解读
obj为实体类
主要用于判断是否需要模糊查询,至于他是什么时候加上%%的,那就是他自己封装的mybatis的框架了。我是不知道了
public static <T> T propertyDeal(T obj, Map<String, Integer> dealColMap) {
if (obj == null) {
return obj;
} else {
Object tempObj = null;
try {
//获取obj实体类的一个对象
tempObj = obj.getClass().newInstance();
} catch (Exception var15) {
log.error(ExceptionUtil.stacktraceToString(var15));
throw StatusCodeExceptionFactory.createStatusCodeException(StatusCodeConstantData.PUB_PARAM_ERROR, ExceptionUtil.getMessage(var15));
}
//把obj对象的值赋给tempObj常用于po转换为vo。能省去很多set,get方法.在这里实际上就是赋值了一个operUser=admin给tempObj。说明是个管理员用户
BeanUtils.copyProperties(obj, tempObj);
Map<String, Integer> colMap = new HashMap();
Set<Entry<String, Integer>> entrySet = dealColMap.entrySet();
Iterator var5 = entrySet.iterator();
int var9;
while(var5.hasNext()) {
Entry<String, Integer> entry = (Entry)var5.next();
//循环取出所有key: name,no,
String[] colNameArr = ((String)entry.getKey()).split(",");
String[] var8 = colNameArr;
var9 = colNameArr.length;
for(int var10 = 0; var10 < var9; ++var10) {
String colName = var8[var10];
//key变大写
colMap.put(colName.toUpperCase(), entry.getValue());
}
}
//第一轮执行colMap为 NO 1
//第二轮 NO 1 NAME 2
//反射查出所有tempObj有的字段。fieldsArr包括字段名,root等等
Field[] fieldsArr = tempObj.getClass().getDeclaredFields();
//这个对象bw记住可以获取字段的值,set和get方法。详情见下面的网站
BeanWrapper bw = new BeanWrapperImpl(tempObj);
Field[] var18 = fieldsArr;
int var19 = fieldsArr.length;
for(var9 = 0; var9 < var19; ++var9) {
Field field = var18[var9];
Object propertyValue = null;
Integer dealType = -1;
try {
//第一轮循环反射是获取类的字段所以包括了static的字段
//private static final long serialVersionUID = 1L;。由于map中不包含所以为null
dealType = (Integer)colMap.get(field.getName().toUpperCase());
//这里第一轮循环propertyValue也为null。也为反射有static字段serialVersionUID。而bw获取的是对象字段
propertyValue = bw.getPropertyValue(field.getName());
} catch (Exception var14) {
}
if (dealType == null) {
dealType = -1;
}
if (propertyValue != null && propertyValue instanceof String && StrUtil.isNotEmpty((String)propertyValue) && dealType != -1) {
//最后如果1表示,不支持模糊查询
if (dealType == 1) {
bw.setPropertyValue(field.getName(), StringUtil.changeFormat((String)propertyValue, "'"));
}
//支持模糊查询
if (dealType == 2) {
bw.setPropertyValue(field.getName(), "%" + propertyValue + "%");
}
//支持右模糊
if (dealType == 3) {
bw.setPropertyValue(field.getName(), propertyValue + "%");
}
//支持左模糊
if (dealType == 4) {
bw.setPropertyValue(field.getName(), "%" + propertyValue);
}
}
}
return tempObj;
}
}