- 浏览: 412412 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
kaihop:
很好,值得学习
Axis2开发WebService客户端 的3种方式 -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
Java解决Emoji表情符问题 -
hongbai:
不能匹配这个:http://harveyzeng.iteye. ...
正则表达式匹配域名、网址、url -
qwertyuiopqaz:
引用
Axis2开发WebService客户端 的3种方式 -
whj001:
很详细 ,
Axis2开发WebService客户端 的3种方式
直接看代码:
public class ConvertUtil { private static final Logger logger = Logger.getLogger(ConvertUtil.class); /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub OrgResponse resp = new OrgResponse(); resp.setAccountNumber("12346"); resp.setCustomerID("5566"); resp.setPassword("hello1sa"); // Map<String, Object> resultMap = ConvertUtil.convertBeanToMap(resp); // System.out.println("convertSimpleBeanToMap result: "); // for (Entry<String, Object> en : resultMap.entrySet()) { // logger.info(en.getKey() + ": " + en.getValue()); // } // // OrgResponse newRes = convertMapToBean(resultMap, resp); // System.out.println("convertMapToSimpleBean result: "); // logger.info(newRes.getAccountNumber()+", " + newRes.getCustomerID() + ", " // + newRes.getPassword()); } /** * Use Reflection to convert Map to java Bean, Ignore the upper/lower case of attributes letters. * */ public static <T> T convertMapToBean(Map<String, Object> map, T t) { Set<Entry<String, Object>> entrySet = map.entrySet(); for (Entry<String, Object> et : entrySet) { String key = et.getKey().toLowerCase(); // convert to lower case Object value = et.getValue(); List<Method> list = new ArrayList<Method>(); getObjSetMethodsWithExtends(t.getClass(), list); for (int i = 0; i < list.size(); i++) { String name = list.get(i).getName();// method name if (!changeStrToSetMethodNames(key).equalsIgnoreCase(name)) continue; try { list.get(i).invoke(t, value); } catch (Exception e) { logger.error(e.getMessage(), e); } break; } } return t; } /** * Use Reflection to convert java Bean to Map * */ public static <T> Map<String, Object> convertBeanToMap(T t) { Map<String, Object> map = new HashMap<String, Object>(); Class cls = t.getClass(); Field[] fieldlist = cls.getDeclaredFields(); for (int i = 0; i < fieldlist.length; i++) { Field f = fieldlist[i]; String name = f.getName(); Class<?> cs = f.getType(); try { String methodNme = changeStrToGetMethodNames(name); Method meth = null; Method[] mds = cls.getDeclaredMethods(); for (int j = 0; j < mds.length; j++) { if (mds[j].getName().equals(methodNme)) { meth = cls.getMethod(methodNme); Object rtcs = meth.invoke(t, null); map.put(name, rtcs); break; } } if (meth == null) { logger.info("Can not find the method " + methodNme + " in class " + t.getClass().getName()); } } catch (SecurityException e) { logger.error(e.getMessage(), e); } catch (NoSuchMethodException e) { logger.error(e.getMessage(), e); } catch (IllegalArgumentException e) { logger.error(e.getMessage(), e); } catch (IllegalAccessException e) { logger.error(e.getMessage(), e); } catch (InvocationTargetException e) { logger.error(e.getMessage(), e); } } return map; } private static String changeStrToSetMethodNames(String str) { if (str == null || "".equals(str.trim())) return null; char firstChar = str.toCharArray()[0]; String upstr = String.valueOf(firstChar).toUpperCase(); return "set" + upstr + str.substring(1); } private static String changeStrToGetMethodNames(String str) { if (str == null || "".equals(str.trim())) return null; char firstChar = str.toCharArray()[0]; String upstr = String.valueOf(firstChar).toUpperCase(); return "get" + upstr + str.substring(1); } private static void getObjSetMethodsWithExtends(Class<?> cls, List<Method> list) { if (cls.equals(Object.class)) { return; } Method[] mds = cls.getDeclaredMethods(); for (int i = 0; i < mds.length; i++) { if (!mds[i].getName().startsWith("set")) continue; list.add(mds[i]); } getObjSetMethodsWithExtends(cls.getSuperclass(), list); } }
发表评论
-
Spring 定时任务及cron表达式
2017-03-16 10:22 4072转发一篇文章并结合实践记录一下,以后可以参考 Ja ... -
mybatis-generator生成mapper等对象
2017-03-15 15:34 2183参考这篇问题基本就能生成了:http://blog. ... -
Java解决Emoji表情符问题
2016-01-28 17:29 22081问题描述:客户调用 ... -
mybatis 模糊查询%问题
2015-09-28 18:52 4266---------------------------- ... -
常见异常备忘
2015-09-23 17:59 4871. jQuery上传插件Uploadify出现Ht ... -
省市区三级联动实现
2015-06-02 18:11 2231参考文档: 从QQ网站中提取的纯JS省市区三级联动 h ... -
面试题记录4
2015-03-10 18:19 6061. 类加载的顺序(初始化顺序) 类加载的顺 ... -
理解Java移位操作
2014-11-06 12:26 7701. 理解移位操作之前先 ... -
一个排好序的数组,找出两数之和为m的所有组合
2014-09-25 16:20 1183public class Test { ... -
Java String知识点
2014-09-19 11:01 8851. 这段程序的结果是什 ... -
用JAVA导出CSV
2014-07-08 14:00 1237/** * 导出为CVS文件 * ... -
Java面试问题
2014-04-17 17:37 820JAVA 接口和抽象类有 ... -
Java动态执行代码Bsh
2014-02-28 17:42 11268首先要到http://www.beanshell.or ... -
Hibernate错误:org.hibernate.LazyInitializationException: illegal access to loading
2013-09-16 19:16 1412org.hibernate.LazyInitializ ... -
Axis2开发WebService客户端 的3种方式
2013-04-18 18:05 79671第一RPC方式,不生成客户端代码 第二,document ... -
freemarker用字符串构建模版
2013-04-15 16:14 1142代码: import java.io.IOExcep ... -
Java基本类型、包装类以及自定义类判断
2013-02-18 17:48 9187一、基本类型与包装类判断 public class Te ... -
正则表达式匹配域名、网址、url
2013-01-28 18:02 33500DNS规定,域名中的标号都由英文字母和数字组成,每一 ... -
正则表达式基础之——环视 [转]
2013-01-25 09:35 1211环视(Lookaround) 1 环视 ... -
遍历集合时出现的异常Exception in thread "main" java.util.ConcurrentModificationException
2012-08-29 18:11 4814如果这样写的话,就会出现异常 public void ...
相关推荐
map 和 bean 之间的转换,可以利用反射的原理实现
java Map转换成bean,利用java反射以及java和bean包将map,Object>类型集合转换成需要的javaBean
基本介绍使用反射将普通Javabean与map集合的相互转换实例,项目开发时编写自己的转换帮助类,更好满足开发时所需
该生成器具有合理的默认值和许多内置的类型转换,但是在配置或实现特殊行为时,它会自动退出。 与在运行时工作的映射框架相比,MapStruct具有以下优点: 通过使用普通方法调用而不是反射来快速执行编译时类型安全。...
主要给大家介绍了关于基于Java反射的map自动装配JavaBean工具类设计的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起看看吧
于是一怒之下,自己动手丰衣足食,就自己用Swing写了一个通过数据库的表生成JavaBean的工具,支持MySQL、Oracle、SQLServce、PostgreSQL,完美支持JPA注解,可以同时生成Entity和DTO,可以自动去除表前缀,并支持...
生成器带有合理的默认值和许多内置类型转换,但在配置或实现特殊行为时它会妨碍您。 与运行时工作的映射框架相比,MapStruct 具有以下优点: 通过使用普通方法调用而不是反射来快速执行 编译时类型安全。只能映射...
BeanMapper通过javassist类库实现在运行时直接生成字节码来转换类,在首次生成后,后续运行可以提供近原生的读写速度。 限制条件 类必须具有符合小驼峰规范的JavaBean setter和getter。否则无法正常访问类。 类必须...
26. 如何实现数组和 List 之间的转换? 11 27. ArrayList 和 Vector 的区别是什么? 11 28. Array 和 ArrayList 有何区别? 12 29. 在 Queue 中 poll()和 remove()有什么区别? 12 30. 哪些集合类是线程安全的? 12 ...
仅仅通过反射方法没有办法知道集合元素中的类型,所以上面的两个converter能将任何集合转换成相对javascript而言有意义的对象.然而没有办法将不同的集合类类型分别采用不同的转换方法.因为没有办法完全自动进行转换,...
10.session bean 和 entity bean的区别 11.ejb中的transaction机制 12.synchronized (生产者和消费) 13.String 和 StringBuffer 14.Serializable 15.MVC (Struts的工作流程) 16.什么是MDA 17.tcp与udp的...
并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 9 6. Collection 和 Collections的区别。 9 7. &和&&的区别。 9 8. HashMap和Hashtable的区别。 10 9. final, finally, finalize的区别...
26.如何实现数组和 List 之间的转换? 27.ArrayList 和 Vector 的区别是什么? 28.Array 和 ArrayList 有何区别? 29.在 Queue 中 poll()和 remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器 Iterator ...
FactoryInstance 的 lookup() 方法被调用,在 SpringFactoryInstance 中,首先查找 Spring 容器,然后,通过 Bean 的 ID 查找 Bean,最终,FlexService 接口的实例被返回。 注意到 destination 的 id 并没有写死在...
FactoryInstance 的 lookup() 方法被调用,在 SpringFactoryInstance 中,首先查找 Spring 容器,然后,通过 Bean 的 ID 查找 Bean,最终,FlexService 接口的实例被返回。 注意到 destination 的 id 并没有写死在...
第23章 管理Session和实现对话 23.1 管理Session对象的生命周期 23.1.1 Session对象的生命周期与本地线程绑定 23.1.2 Session对象的生命周期与JTA事务绑定 23.2 实现对话 23.2.1 使用游离对象 23.2.2 ...
第23章 管理Session和实现对话 23.1 管理Session对象的生命周期 23.1.1 Session对象的生命周期与本地线程绑定 23.1.2 Session对象的生命周期与JTA事务绑定 23.2 实现对话 23.2.1 使用游离对象 23.2.2 ...
第23章 管理Session和实现对话 23.1 管理Session对象的生命周期 23.1.1 Session对象的生命周期与本地线程绑定 23.1.2 Session对象的生命周期与JTA事务绑定 23.2 实现对话 23.2.1 使用游离对象 23.2.2 ...
第23章 管理Session和实现对话 23.1 管理Session对象的生命周期 23.1.1 Session对象的生命周期与本地线程绑定 23.1.2 Session对象的生命周期与JTA事务绑定 23.2 实现对话 23.2.1 使用游离对象 23.2.2 ...