`

自动将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 renntrabbit@foxmail.com
 * 
 */
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());
		
	}
	
分享到:
评论

相关推荐

    java Map转换成bean,利用java反射以及java和bean包

    在这个示例中,`mapToBean`方法接受一个Map和目标Bean的Class对象,首先检查参数是否有效,然后创建一个新的Bean实例,遍历Map中的每一个键值对,通过反射找到Bean中对应的Field,设置其可访问,最后调用`set()`方法...

    java bean和map之间的互转

    Java Bean是一种符合特定规范的类,通常用于封装业务数据,而Map则是一种键值对的集合,便于灵活地存储和查找数据。在实际开发中,我们常常需要将Java Bean对象与Map对象之间进行转换,以便于数据的处理和传输。以下...

    List转换为List

    本知识点重点讲解将List&lt;Bean&gt;转换为List&lt;Map&gt;的过程,这在进行Web开发、数据处理以及与前端交互等场景中非常常见。同时,也会涉及List转换为List及list转换为JsonArray的内容。 ### List&lt;Bean&gt;转换为List&lt;Map&gt; 在...

    json与bean,array,list,map,简单类型之间的封装、解析

    只需要将`String[].class`替换为`List&lt;String&gt;.class`,Gson会自动处理JSON数组到List的转换。 再者,JSON与Map的转换。Map在Java中用于存储键值对,Gson同样支持这种转换: ```java Map, String&gt; map = new ...

    各种转换,xml,实体bean,动态bean,map等

    在实际应用中,比如“动态bean转换”,可能指的是将动态生成的bean对象转换为其他格式,如XML字符串或Map,以便进一步处理或存储。同时,“entryBean”可能是一个特定的Java Bean,用于封装Map的键值对,提供更面向...

    map与Javabean相互转换实例

    在这个例子中,`beanToMap`方法通过反射获取`User`类的所有字段,并将它们的值放入`Map`中,键为字段名,值为字段的当前值。 反过来,将`Map`转换为`JavaBean`的过程如下: ```java public static &lt;T&gt; T mapToBean...

    深度转换Bean<->Bean的Mapper

    通常,这类库提供了一个简单的方法,如`map()`,接受源Bean和目标Bean类型作为参数,自动处理属性映射。例如: ```java MySource source = ...; MyDestination dest = BeanMapper.map(source, MyDestination.class)...

    spring bean 属性总结

    下面将深入探讨`&lt;beans&gt;`、`&lt;bean&gt;`及其属性,以及其他相关的配置元素。 #### `&lt;beans&gt;` 根元素 `&lt;beans&gt;`元素是Spring配置文件的根元素,用于封装一个或多个`&lt;bean&gt;`元素。这使得开发人员能够在一个文件中定义和...

    java中将数据库中数据赋值给Map对象源代码

    在Java开发中,特别是在使用Spring框架时,将数据库中的数据转换为Map对象是一种常见的操作。这样做可以简化数据处理,使得数据以键值对的形式存储,便于快速查找和使用。Spring框架提供了强大的数据访问抽象,包括...

    JavaBean和Map转换封装类的方法

    1. `map2Java`: 这个方法用于将Map对象转换为JavaBean对象。它接受一个JavaBean实例和一个Map对象作为参数。首先,通过`Introspector.getBeanInfo()`获取JavaBean的属性信息,然后通过反射创建JavaBean的新实例。...

    将数据库操作封装到Javabean

    4. **结果处理**:将查询结果封装成`Map`并存储在`List`中,方便后续处理。 #### 五、具体实现 根据给定的部分内容,我们可以看到`DbWrapper`类包含了以下功能: 1. **数据源初始化**:使用`DataSource`接口初始化...

    策略模式的实现,通过反射

    在这个实现中,我们可以创建一个Map,键为策略的标识(如字符串),值为策略接口的实现类。这样,我们可以通过键来获取对应的策略实例,实现动态策略选择。例如: ```java Map, Strategy&gt; strategyMap = new ...

    java map转实体

    java map转实体可以利用java的反射去封装,于是就在hibernate的工具类下试着封装了下,封装完了之后感觉没必要,这完全就可以提取出来变成一个独立的工具类,而不仅仅局限于hibernate了,这样既可以满足一个hql查询...

    Desktop_javaBean转换Map工具_

    将JavaBean转换为Map是一种常见的需求,特别是在处理数据绑定、JSON序列化或者存储时。标题“Desktop_javaBean转换Map工具_”暗示了这是一个方便的工具或代码片段,用于快速将JavaBean实例转换为Map对象。 描述中...

    castor转map

    转换为Map时,我们可以利用Castor的Mapping API,将Bean中的属性值一一映射到Map的键值对中。Map的键通常是Bean的属性名,值则是对应的属性值。 **3. Castor的Mapping配置** 在使用Castor进行转换前,需要配置...

    json转换bean

    本文将深入探讨如何使用JSON-lib库实现JSON与Java Bean、Map、List等数据结构之间的相互转换。 #### JSON-lib简介及安装 JSON-lib是早期非常流行的用于处理JSON的Java库之一。它提供了强大的功能,能够将JSON字符...

    googleMap根据经纬度获取地理位置

    3. Java后端对JSON数据的处理,通过Gson库将JSON转换为Java Bean对象。 压缩包内的`test.java`可能是测试代码,而`domain`可能包含了一些表示地理位置信息的Java Bean类。通过这些代码,开发者可以进一步理解和实现...

    详解json string转换为java bean及实例代码.docx

    本文详细介绍了如何将 JSON 数据转换为 Java Bean,包括了所需库的添加、Java Bean 的定义以及具体的转换示例。通过这种方式,我们可以更高效地处理 JSON 数据,提高开发效率并降低错误率。在未来的工作中,掌握这一...

    xlsx百万级模板数据导出

    #each 迭代map或实体bean所有的属性 #foreach 一次性导出xlsx #pageforeach 分页导出xlsx,使用该标签,可以8M内存导出百万级数据 代码里提供了对应的模板和junit测试类,详细见Sax07ExcelUtilTest

    mi-yi-collection-bean-master_java_源码

    在Java编程中,Bean类通常指的是符合JavaBeans规范的类,它们具有属性、构造方法和getter/setter方法,用于封装数据并提供数据访问。 【描述】中提到的学习技术笔记和逐步补充的内容,暗示了这是一个逐步深入学习...

Global site tag (gtag.js) - Google Analytics