package com.bn.b2b.crp.utils; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import com.alibaba.fastjson.JSONObject; public class Dto2Entity { /** * 父类DTO对象转换为实体对象。如命名不规范或其他原因导致失败 * @param t 源转换的对象 * @param e 目标转换的对象 * */ public static <T,E> void transalte(T t,E e){ Method[] tms=t.getClass().getSuperclass().getDeclaredMethods(); Method[] tes=e.getClass().getSuperclass().getDeclaredMethods(); for(Method m1:tms){ if(m1.getName().startsWith("get")){ String mNameSubfix=m1.getName().substring(3); String forName="set"+mNameSubfix; for(Method m2:tes){ if(m2.getName().equals(forName)){ // 如果类型一致,或者m1的返回类型是m2的参数类型的父类或接口 boolean canContinue = m1.getReturnType().isAssignableFrom(m2.getParameterTypes()[0]); if (canContinue) { try { m2.invoke(e, m1.invoke(t)); break; } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } } } } /** * DTO对象转换为实体对象。如命名不规范或其他原因导致失败 * @param t 源转换的对象 * @param e 目标转换的对象 * */ public static <T,E> void transalte2(T t,E e){ Method[] tms=t.getClass().getDeclaredMethods(); Method[] tes=e.getClass().getDeclaredMethods(); for(Method m1:tms){ if(m1.getName().startsWith("get")){ String mNameSubfix=m1.getName().substring(3); String forName="set"+mNameSubfix; for(Method m2:tes){ if(m2.getName().equals(forName)){ // 如果类型一致,或者m1的返回类型是m2的参数类型的父类或接口 boolean canContinue = m1.getReturnType().isAssignableFrom(m2.getParameterTypes()[0]); if (canContinue) { try { m2.invoke(e, m1.invoke(t)); break; } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } } } } /** * DTO对象转换为实体对象。如命名不规范或其他原因导致失败 * 源目标数据为空不转换 * @param t 源转换的对象 * @param e 目标转换的对象 * */ public static <T,E> void transalte3(T t,E e){ Method[] tms=t.getClass().getDeclaredMethods(); Method[] tes=e.getClass().getDeclaredMethods(); for(Method m1:tms){ if(m1.getName().startsWith("get")){ String mNameSubfix=m1.getName().substring(3); String forName="set"+mNameSubfix; for(Method m2:tes){ if(m2.getName().equals(forName)){ // 如果类型一致,或者m1的返回类型是m2的参数类型的父类或接口 boolean canContinue = m1.getReturnType().isAssignableFrom(m2.getParameterTypes()[0]); if (canContinue) { try { if(m1.invoke(t) != null) { m2.invoke(e, m1.invoke(t)); } break; } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } } } } /** * JSONObject对象转换为实体对象。如命名不规范或其他原因导致失败 * @param jsonObject 源json对象 * @param jsonKey json对象key * @param dtoKey 目标对象属性 * @param clazz 目标转换的class * @return */ public static <T> T jsonObj2Dto(JSONObject jsonObject, String[] jsonKey, String[] dtoKey, Class<T> clazz){ for(int i = 0; i < jsonKey.length; i++) { if(jsonObject.containsKey(jsonKey[i]) && jsonObject.get(jsonKey[i]) != null) { jsonObject.put(dtoKey[i], jsonObject.get(jsonKey[i])); } } return JSONObject.toJavaObject(jsonObject, clazz); } }
相关推荐
只需要复制数据库列名,支持多列复制,执行工具类即可生成对应的Java字段代码。 4、优点:使用代码生成驼峰形式的字段,可以减少出错概率,生成的实体类字段符合Java命名规范,易于阅读和理解。 5、使用示例:将...
一、数据库工具类 1、com.baijob.commonTools.db.ds C3p0Ds 和 DruidDs分别是两种连接池的实现,依赖于数据库配置文件,配置文件的样例参考config/db-example.setting 使用时将db-example.setting复制于${...
(1)本工具提供了3中连接数据库的方式,分别是:MySql、Oracle、SqlServer,在界面上给出连接示例,方便进行复制和修改(减少因错误配置连接方式而带来了不能链接数据库问题)。配置正确后即可正确读取出数据库中的...
${field.alias}实体属性注解中的alias值,默认为属性名.可配置中文注释,生成代码时显示该注释. ${field.isKey}实体属性注解中的isKey值,boolean类型,配置后可以使用${bean.key}变量. ${field.isRequired}实体属性中的...
即时复制、粘贴和动态转换类、方法、属性等,甚至在类和模块之间。 使用实体洞察™ 更改(多个)选定成员的属性。 重新排列和排序代码,维护区域定义。 使用历史记录、方法收藏夹和成员搜索栏改进导航 实时文档...
14.10 使用xsl:copy复制当前节点 480 14.11 使用xsl:number为节点计数 483 14.11.1 缺省数值 484 14.11.2 数字到字符串的变换 486 14.12 对输出元素排序 488 14.13 CDATA和<符 491 14.14 方式 493 14.15 使用xsl:...
14.10 使用xsl:copy复制当前节点 480 14.11 使用xsl:number为节点计数 483 14.11.1 缺省数值 484 14.11.2 数字到字符串的变换 486 14.12 对输出元素排序 488 14.13 CDATA和<符 491 14.14 方式 493 14.15 使用xsl:...
1.3.3 浏览器和其他工具... 15 1.3.4 处理过程总结... 15 .4 相关技术... 17 1.4.1 超文本标记语言(Hypertext Markup Language)... 17 1.4.2 级联样式单(Cascading Style Sheets)... 17 1.4.3 可扩展的样式...
1.3.3 浏览器和其他工具... 15 1.3.4 处理过程总结... 15 .4 相关技术... 17 1.4.1 超文本标记语言(Hypertext Markup Language)... 17 1.4.2 级联样式单(Cascading Style Sheets)... 17 1.4.3 可扩展的样式...
1.3.3 浏览器和其他工具... 15 1.3.4 处理过程总结... 15 .4 相关技术... 17 1.4.1 超文本标记语言(Hypertext Markup Language)... 17 1.4.2 级联样式单(Cascading Style Sheets)... 17 1.4.3 可扩展的样式...
支持Javabeans的用法用DTD, Schema, RelaxNG将标签和实体的语法补充完整(从光标当前位置开始)用户可自定义事件工具条实时语法错误检测智能分析(Schema 检测)几个用于XML的标准事件类(分析,查询和注释)实时...
15 1.3.3 浏览器和其他工具... 15 1.3.4 处理过程总结... 15 4 相关技术... 17 1.4.1 超文本标记语言(Hypertext Markup Language)... 17 1.4.2 级联样式单(Cascading Style Sheets)... 17 ...
利用JOIN 工具可以方便的实现与外界属性数据的关联,但这种关联是依赖于外界数据库本身的,需经过重新导出之后即完全保存在相应图层属性页。在做外联如EXCEL等的时候对数据有一些要求,确保第一行包含字段名,这些...
注意:如果一个属性扩展了 Collection 类,它将为您的 getter 创建前缀列表而不是 get。 (未来版本可能会使其成为一个选项)。 generate 还将创建一个 convertFromEntity 方法,该方法会将您的实体对象中的所有值...
13.4.2 反向工程生成JPA 实体类和Spring DAO类 242 13.4.3 创建测试类 243 13.5 本章小结 243 第14章 Web Service的开发及应用 244 14.1 Web Service概述 244 14.2 使用MyEclipse创建Web Service项目 245 14.2.1 ...