/** * 属性拷贝,如果 源对象为MAP,则不区分属性大小写进行拷贝 * * @param dest * @param src */ public static void copyProperties(Object dest, Object src) { if (src instanceof Map) { Map srcMap = (Map) src; copyPropertiesMapToObject(dest, srcMap); } else { try { BeanUtils.copyProperties(dest, src); } catch (Exception ex) { throw new AnnotationExceptoin("Exception:BeanUtils.copyProperties():" + ex.getMessage()); } } }
private static void copyPropertiesMapToObject(Object dest, Map src) { Field[] destField = AnnotationSqlUtil.getObjectAllField(dest.getClass()); Set<String> keySet = src.keySet(); for (String name : keySet) { for (Field df : destField) { String fieldName = df.getName(); if (name.equalsIgnoreCase(fieldName)) { String firstLetter = fieldName.substring(0, 1).toUpperCase(); String setMethodName = "set" + firstLetter + fieldName.substring(1); try { Method setMethod = dest.getClass().getMethod(setMethodName, new Class[] { df.getType() }); setMethod.invoke(dest, new Object[] {coverBigDecimalValue(src.get(name)) }); } catch (Exception ex) { throw new AnnotationExceptoin("Exception:BeanUtils.copyPropertiesMapToObject():" + ex.getMessage()); } } } } } /** * 将BigDecimal转换为 int 型或者 double 型 * @param value * @return */ private static Object coverBigDecimalValue(Object value) throws Exception { if (value instanceof BigDecimal) { BigDecimal bd = (BigDecimal) value; if (String.valueOf(bd).indexOf(".") > -1) { //double型 return Double.parseDouble(String.valueOf(bd)); } else { // int 型 return Integer.parseInt(String.valueOf(bd)); } } return value; }
对象属性拷贝方法,支持源对象为MAP的拷贝
最新推荐文章于 2023-11-03 10:06:29 发布