对象属性拷贝方法,支持源对象为MAP的拷贝

/**
	 * 属性拷贝,如果 源对象为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;

	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值