1.最近发开中,for循环更实用写法
情景:检索Map中所有的键值对
//遍历map键值对
for(Map.Entry entry:map.entrySet()){
System.out.println(entry.getKey()+"="+entry.getValue());
}
//Map.Entry获取Map某一个键值对
//entry.getKey()获取单个键名称
//entry.getKey()获取单个键值
情景:获取List<Object‘>每个对象的属性值,
//记录更新字段和字段值
List<Comparison> differents = new ArrayList<Comparison>();
for(Comparison items: differents) {
//导出items的属性,字段名,字段旧值,字段新值
operationStr = operationStr + ("["+items.getField()+"发生变化,"+items.getBefore()+"修改成:"+items.getAfter()+"];");
}
格式:for(Object 对象名:集合名){
对单个Object进行操作
}
2.如何将JSONObject数据结构转换成Bean对象?
JSONObject ObjData = JSONObject.fromObject(Obj);//Obj是前端传过来的Json数据结构的字符串
DeviceFun devNew = (DeviceFun)JSONObject.toBean(ObjData,DeviceFun.class);
3.如何记录Bean的值变化,存入日志表中?
- 创建记录变化的对照实体Bean,Bean名称:Comparison。
public class Comparison {
//字段名称
private String Field;
//字段旧值
private Object before;
//字段新值
private Object after;
/**
* @return the field
*/
public String getField() {
return Field;
}
/**
* @param field the field to set
*/
public void setField(String field) {
Field = field;
}
/**
* @return the before
*/
public Object getBefore() {
return before;
}
/**
* @param before the before to set
*/
public void setBefore(Object before) {
this.before = before;
}
/**
* @return the after
*/
public Object getAfter() {
return after;
}
/**
* @param after the after to set
*/
public void setAfter(Object after) {
this.after = after;
}
}
- 创建工具类/对象比较类 CompareObjUtil
public class CompareObjUtil {
public static List<Comparison> compareObj(Object beforeObj,Object afterObj) throws Exception{
List<Comparison> differents = new ArrayList<Comparison>();
if(beforeObj == null) throw new Exception("原对象不能为空");
if(afterObj == null) throw new Exception("新对象不能为空");
if(!beforeObj.getClass().isAssignableFrom(afterObj.getClass())){
throw new Exception("两个对象不相同,无法比较");
}
//取出属性
Field[] beforeFields = beforeObj.getClass().getDeclaredFields();
Field[] afterFields = afterObj.getClass().getDeclaredFields();
Field.setAccessible(beforeFields, true);
Field.setAccessible(afterFields, true);
//遍历取出差异值
if(beforeFields != null && beforeFields.length > 0){
for(int i=0; i<beforeFields.length; i++){
Object beforeValue = beforeFields[i].get(beforeObj);
Object afterValue = afterFields[i].get(afterObj);
if((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)){
Comparison comparison = new Comparison();
comparison.setField(beforeFields[i].getName());
comparison.setBefore(beforeValue);
comparison.setAfter(afterValue);
differents.add(comparison);
}
}
}
return differents;
}
}
使用方法:创建对象比较类 CompareObjUti,调用方法compareObj即可。