自动将map 封装为bean

public interface IDTO {
	void init(Dto inDto);
}

package com.cnnct.zhk.balance.inaccountmanage.dto;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

import org.eredlab.g4.ccl.datastructure.Dto;

import com.cnnct.common.ApplicationException;
import com.cnnct.zhk.balance.common.BusinessErrorCode;

/**
 * 
 * @author rabbit
 * @date 2013-5-17 上午11:18:51
 * @email [email protected]
 * 
 */
public class BaseDTO implements IDTO {

	/**
	 * 通过反射封装dto dot 就是那个mp
	 * 
	 * @param aForm
	 */
	@Override
	public void init(Dto inDto) {
		Class<?> clz = this.getClass();
		// 获取实体类的所有属性,返回Field数组
		Field[] fields = clz.getDeclaredFields();
		try {
			for (Field fld : fields) {
				Object obj = inDto.get(fld.getName());
				if (null == obj || obj.equals("")) {
					continue;
				}
				String fldName = fld.getName();
				fldName = textCapWords(textCapWords(fldName));
				Method setMethod;
				setMethod = clz.getMethod("set" + fldName, fld.getType());

				Object value = packageThisValue(fld.getType(), obj);
				setMethod.invoke(this, value);
			}

		} catch (NoSuchMethodException e) {
			throw new ApplicationException(BusinessErrorCode.GMFW_GS_ADD, "获取上传的数据转换为DTO时出错!", e);
		} catch (Exception e) {
			throw new ApplicationException(BusinessErrorCode.GMFW_GS_ADD, "获取上传的数据转换为DTO时出错!", e);
		}
	}

	private Object packageThisValue(Class<?> type, Object value) {
		Object obj;
		if (type.equals(byte.class)) {
			obj = Byte.class.getInterfaces();
		} else if (type.equals(boolean.class)) {
			obj = Boolean.class.getInterfaces();
		} else if (type.equals(short.class)) {
			obj = Short.class.getInterfaces();
		} else if (type.equals(char.class)) {
			obj = Character.class.getInterfaces();
		} else if (type.equals(int.class)) {
			obj = Integer.class.getInterfaces();
		} else if (type.equals(long.class)) {
			obj = Long.class.getInterfaces();
		} else if (type.equals(float.class)) {
			obj = Float.class.getInterfaces();
		} else if (type.equals(double.class)) {
			obj = Double.class.getInterfaces();
		} else {
			obj = type.getInterfaces();
		}
		obj = value;
		return obj;

	}

          /**
	 * 首字母大写
	 * 
	 * @param name
	 * @return
	 */
	private static String textCapWords(String name) {
		StringBuilder newWords = new StringBuilder(name);

		newWords.insert(0, newWords.substring(0, 1).toUpperCase());
		newWords.delete(1, 2);
		return newWords.toString();
	}

	public static void main(String[] args) {
		System.out.println("get" + textCapWords("payWay"));
	}

}


不同的业务dto

package com.cnnct.zhk.balance.inaccountmanage.entity;

import com.cnnct.zhk.balance.inaccountmanage.dto.BaseDTO;

public class Recharge4DTO extends BaseDTO  {

	private int payWay;
	// 结算银行
	private String settlementBank;
	// 凭证号
	private String voucherNo;
	// 充值卡号
	private String rechargeableCardNo;
	// 卡密码
	private String passwd;
	// 冲值金额
	private double totamt;
	//客户号
	private String cliId;
	
	//贷方卡号
	private String crCardNo;
	//交易码
	private String tradeId;

	
	// 操作员
	private String operationId;
	//网点
	private String serId;
	//用户机构
	private String orgId;

	protected String accreditMan; // 授权人
	protected String accreditPass; // 授权人密码

	
	public int getPayWay() {
		return payWay;
	}
	public void setPayWay(int payWay) {
		this.payWay = payWay;
	}
	public String getSettlementBank() {
		return settlementBank;
	}
	public void setSettlementBank(String settlementBank) {
		this.settlementBank = settlementBank;
	}
	public String getVoucherNo() {
		return voucherNo;
	}
	public void setVoucherNo(String voucherNo) {
		this.voucherNo = voucherNo;
	}
	public String getRechargeableCardNo() {
		return rechargeableCardNo;
	}
	public void setRechargeableCardNo(String rechargeableCardNo) {
		this.rechargeableCardNo = rechargeableCardNo;
	}
	public String getPasswd() {
		return passwd;
	}
	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}
	public double getTotamt() {
		return totamt;
	}
	public void setTotamt(double totamt) {
		this.totamt = totamt;
	}
	public String getAccreditMan() {
		return accreditMan;
	}
	public void setAccreditMan(String accreditMan) {
		this.accreditMan = accreditMan;
	}
	public String getAccreditPass() {
		return accreditPass;
	}
	public void setAccreditPass(String accreditPass) {
		this.accreditPass = accreditPass;
	}
	public String getOperationId() {
		return operationId;
	}
	public void setOperationId(String operationId) {
		this.operationId = operationId;
	}
	public String getSerId() {
		return serId;
	}
	public void setSerId(String serId) {
		this.serId = serId;
	}
	public String getCrCardNo() {
		return crCardNo;
	}
	public void setCrCardNo(String crCardNo) {
		this.crCardNo = crCardNo;
	}
	public String getTradeId() {
		return tradeId;
	}
	public void setTradeId(String tradeId) {
		this.tradeId = tradeId;
	}
	public String getOrgId() {
		return orgId;
	}
	public void setOrgId(String orgId) {
		this.orgId = orgId;
	}
	public String getCliId() {
		return cliId;
	}
	public void setCliId(String cliId) {
		this.cliId = cliId;
	}
	@Override
	public String toString() {
		return "Recharge4DTO [accreditMan=" + accreditMan + ", accreditPass=" + accreditPass + ", cliId=" + cliId
				+ ", crCardNo=" + crCardNo + ", operationId=" + operationId + ", orgId=" + orgId + ", passwd=" + passwd
				+ ", payWay=" + payWay + ", rechargeableCardNo=" + rechargeableCardNo + ", serId=" + serId
				+ ", settlementBank=" + settlementBank + ", totamt=" + totamt + ", tradeId=" + tradeId + ", voucherNo="
				+ voucherNo + "]";
	}
	
	

	
	
}



测试类:
	public static void main(String[] args) {
		Dto inDto=new BaseDto();
		inDto.put("settlementBank", "abc");
		inDto.put("totamt", 12.12D);
		inDto.put("payWay", 10);
		System.out.println(inDto.toJson());
		
		Recharge4DTO recharge4DTO=new Recharge4DTO();
		recharge4DTO.init (inDto);
		System.out.println(recharge4DTO.getSettlementBank());
		System.out.println(recharge4DTO.toString());
		
	}
	

猜你喜欢

转载自hackpro.iteye.com/blog/1874704