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());
}
分享到:
相关推荐
在这个示例中,`mapToBean`方法接受一个Map和目标Bean的Class对象,首先检查参数是否有效,然后创建一个新的Bean实例,遍历Map中的每一个键值对,通过反射找到Bean中对应的Field,设置其可访问,最后调用`set()`方法...
Java Bean是一种符合特定规范的类,通常用于封装业务数据,而Map则是一种键值对的集合,便于灵活地存储和查找数据。在实际开发中,我们常常需要将Java Bean对象与Map对象之间进行转换,以便于数据的处理和传输。以下...
本知识点重点讲解将List<Bean>转换为List<Map>的过程,这在进行Web开发、数据处理以及与前端交互等场景中非常常见。同时,也会涉及List转换为List及list转换为JsonArray的内容。 ### List<Bean>转换为List<Map> 在...
只需要将`String[].class`替换为`List<String>.class`,Gson会自动处理JSON数组到List的转换。 再者,JSON与Map的转换。Map在Java中用于存储键值对,Gson同样支持这种转换: ```java Map, String> map = new ...
在实际应用中,比如“动态bean转换”,可能指的是将动态生成的bean对象转换为其他格式,如XML字符串或Map,以便进一步处理或存储。同时,“entryBean”可能是一个特定的Java Bean,用于封装Map的键值对,提供更面向...
在这个例子中,`beanToMap`方法通过反射获取`User`类的所有字段,并将它们的值放入`Map`中,键为字段名,值为字段的当前值。 反过来,将`Map`转换为`JavaBean`的过程如下: ```java public static <T> T mapToBean...
通常,这类库提供了一个简单的方法,如`map()`,接受源Bean和目标Bean类型作为参数,自动处理属性映射。例如: ```java MySource source = ...; MyDestination dest = BeanMapper.map(source, MyDestination.class)...
下面将深入探讨`<beans>`、`<bean>`及其属性,以及其他相关的配置元素。 #### `<beans>` 根元素 `<beans>`元素是Spring配置文件的根元素,用于封装一个或多个`<bean>`元素。这使得开发人员能够在一个文件中定义和...
在Java开发中,特别是在使用Spring框架时,将数据库中的数据转换为Map对象是一种常见的操作。这样做可以简化数据处理,使得数据以键值对的形式存储,便于快速查找和使用。Spring框架提供了强大的数据访问抽象,包括...
1. `map2Java`: 这个方法用于将Map对象转换为JavaBean对象。它接受一个JavaBean实例和一个Map对象作为参数。首先,通过`Introspector.getBeanInfo()`获取JavaBean的属性信息,然后通过反射创建JavaBean的新实例。...
4. **结果处理**:将查询结果封装成`Map`并存储在`List`中,方便后续处理。 #### 五、具体实现 根据给定的部分内容,我们可以看到`DbWrapper`类包含了以下功能: 1. **数据源初始化**:使用`DataSource`接口初始化...
在这个实现中,我们可以创建一个Map,键为策略的标识(如字符串),值为策略接口的实现类。这样,我们可以通过键来获取对应的策略实例,实现动态策略选择。例如: ```java Map, Strategy> strategyMap = new ...
java map转实体可以利用java的反射去封装,于是就在hibernate的工具类下试着封装了下,封装完了之后感觉没必要,这完全就可以提取出来变成一个独立的工具类,而不仅仅局限于hibernate了,这样既可以满足一个hql查询...
将JavaBean转换为Map是一种常见的需求,特别是在处理数据绑定、JSON序列化或者存储时。标题“Desktop_javaBean转换Map工具_”暗示了这是一个方便的工具或代码片段,用于快速将JavaBean实例转换为Map对象。 描述中...
转换为Map时,我们可以利用Castor的Mapping API,将Bean中的属性值一一映射到Map的键值对中。Map的键通常是Bean的属性名,值则是对应的属性值。 **3. Castor的Mapping配置** 在使用Castor进行转换前,需要配置...
本文将深入探讨如何使用JSON-lib库实现JSON与Java Bean、Map、List等数据结构之间的相互转换。 #### JSON-lib简介及安装 JSON-lib是早期非常流行的用于处理JSON的Java库之一。它提供了强大的功能,能够将JSON字符...
3. Java后端对JSON数据的处理,通过Gson库将JSON转换为Java Bean对象。 压缩包内的`test.java`可能是测试代码,而`domain`可能包含了一些表示地理位置信息的Java Bean类。通过这些代码,开发者可以进一步理解和实现...
本文详细介绍了如何将 JSON 数据转换为 Java Bean,包括了所需库的添加、Java Bean 的定义以及具体的转换示例。通过这种方式,我们可以更高效地处理 JSON 数据,提高开发效率并降低错误率。在未来的工作中,掌握这一...
#each 迭代map或实体bean所有的属性 #foreach 一次性导出xlsx #pageforeach 分页导出xlsx,使用该标签,可以8M内存导出百万级数据 代码里提供了对应的模板和junit测试类,详细见Sax07ExcelUtilTest
在Java编程中,Bean类通常指的是符合JavaBeans规范的类,它们具有属性、构造方法和getter/setter方法,用于封装数据并提供数据访问。 【描述】中提到的学习技术笔记和逐步补充的内容,暗示了这是一个逐步深入学习...