package com.bcxin.signature.util; import com.bcxin.signature.util.common.StringUtil; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.Map; public class MyConverUtil { public static Map PO2Map(Object o) throws Exception{ Map map = new HashMap(); Field[] fields = null; String clzName = o.getClass().getSimpleName(); fields = o.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); String proName = field.getName(); String types = field.getGenericType().toString(); if(types.indexOf("interface")!=-1){ }else if("serialVersionUID".equals(proName)){ }else if(Modifier.isFinal(field.getModifiers())){ System.out.println(proName); }else{ String name = proName.substring(0, 1).toUpperCase() + proName.substring(1); Method m = o.getClass().getMethod("get" + name); Object proValue = field.get(o); String value_obj = ""; if(proValue == null){ continue; } if(!"class java.lang.String".equals(types)){ if("class java.util.Date".equals(types)){ // 调用getter方法获取属性值 Date value = (Date) m.invoke(o); if(value != null){ value_obj = DateUtil.formatDateTime(value); } }else if("int".equals(types)){ int value_INT = (int) m.invoke(o); if(value_INT == 0){ value_obj = String.valueOf(value_INT); }else{ value_obj = String.valueOf(proValue); } }else{ value_obj = String.valueOf(proValue); } }else{ value_obj = String.valueOf(proValue); } if(value_obj == "null"){ value_obj = ""; } map.put(proName, value_obj); } } return map; } public static Object map2PO(Map map,Object o) throws Exception{ if (!map.isEmpty()) { for (String k : map.keySet()) { String v = ""; if (!k.isEmpty()) { v = String.valueOf(map.get(k)); } Field[] fields = null; fields = o.getClass().getDeclaredFields(); String clzName = o.getClass().getSimpleName(); if(StringUtil.isNotBlank(v)){ for (Field field : fields) { int mod = field.getModifiers(); if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){ continue; } if (field.getName().equals(k)) { String types = field.getGenericType().toString(); field.setAccessible(true); if("class java.lang.String".equals(types)){ field.set(o, v); } if("class java.util.Date".equals(types)){ if(v.length() == 10){ v = v + " 00:00:00"; } field.set(o, DateUtil.matchFormatByLength(v)); } if("int".equals(types)){ field.set(o, Integer.parseInt(v)); } if("class java.math.BigDecimal".equals(types)){ field.set(o, BigDecimal.valueOf(Double.parseDouble(v))); } if("long".equals(types)){ field.set(o, Long.parseLong(v)); } if("class java.lang.Integer".equals(types)){ field.set(o, Integer.parseInt(v)); } if("class java.lang.Boolean".equals(types)){ field.set(o, Boolean.parseBoolean(v)); } } } } } } return o; } public static Object map2PoToString(Map map,Object o) throws Exception{ if (!map.isEmpty()) { for (String k : map.keySet()) { String v = ""; if (!k.isEmpty()) { v = map.get(k); } Field[] fields = null; fields = o.getClass().getDeclaredFields(); String clzName = o.getClass().getSimpleName(); for (Field field : fields) { int mod = field.getModifiers(); if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){ continue; } if (field.getName().equals(k)) { String types = field.getGenericType().toString(); field.setAccessible(true); if("class java.lang.String".equals(types)){ field.set(o, v); } if("class java.util.Date".equals(types)&&StringUtil.isNotBlank(v)){ if(v.length() == 10){ v = v + " 00:00:00"; } field.set(o, DateUtil.matchFormatByLength(v)); } if("int".equals(types)&&StringUtil.isNotBlank(v)){ field.set(o, Integer.parseInt(v)); } if("class java.math.BigDecimal".equals(types)&&StringUtil.isNotBlank(v)){ field.set(o, BigDecimal.valueOf(Double.parseDouble(v))); } if("long".equals(types)&&StringUtil.isNotBlank(v)){ field.set(o, Long.parseLong(v)); } if("class java.lang.Integer".equals(types)&&StringUtil.isNotBlank(v)){ field.set(o, Integer.parseInt(v)); } if("class java.lang.Boolean".equals(types)&&StringUtil.isNotBlank(v)){ field.set(o, Boolean.parseBoolean(v)); } } } } } return o; } }