Map与Bean互转(下划线转大写)
来源:互联网 发布:java游戏大全百度网盘 编辑:程序博客网 时间:2024/06/06 03:03
import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import org.apache.commons.beanutils.BeanUtils; /** * Map与Bean互转 * * * 当把Person类作为BeanUtilTest的内部类时,程序出错<br> * java.lang.NoSuchMethodException: Property '**' has no setter method<br> * 本质:内部类 和 单独文件中的类的区别 <br> * BeanUtils.populate方法的限制:<br> * The class must be public, and provide a public constructor that accepts no arguments. <br> * This allows tools and applications to dynamically create new instances of your bean, <br> * without necessarily knowing what Java class name will be used ahead of time */ public class MapBeanConvertUtil { /** * <p class="detail"> * 功能:Map --> Bean 2: 利用org.apache.commons.beanutils 工具类实现 Map --> Bean * 推荐使用 * </p> * @author wuxw * @param map * @param obj * @throws */ public static void transMap2Bean(Map<String, Object> map, Object obj) { if (map == null || obj == null) { return; } try { BeanUtils.populate(obj, map); } catch (Exception e) { System.out.println("transMap2Bean2 Error " + e); } } // Map --> Bean 1: 利用Introspector,PropertyDescriptor实现 Map --> Bean public static void transMap2Bean2(Map<String, Object> map, Object obj) { try { BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); if (map.containsKey(key)) { Object value = map.get(key); // 得到property对应的setter方法 Method setter = property.getWriteMethod(); setter.invoke(obj, value); } } } catch (Exception e) { System.out.println("transMap2Bean Error " + e); } return; } /** * <p class="detail"> * 功能: Map --> Bean 1: 利用Introspector,PropertyDescriptor实现 Map --> Bean * 固定hibernateBean类型转换: user_name 转 userName ,注意严格验证参数 * * </p> * @author wuxw * @param map * @param obj * @throws */ public static void transMap2HiberanteBean(Map<String, Object> map, Object obj) { try { BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); //将key中大写字符转为_大写 key = underscoreName(key); if (map.containsKey(key)) { Object value = map.get(key); // 得到property对应的setter方法 Method setter = property.getWriteMethod(); setter.invoke(obj, value); } } } catch (Exception e) { System.out.println("transMap2Bean Error " + e); } return; } // Bean --> Map 1: 利用Introspector和PropertyDescriptor 将Bean --> Map public static Map<String, Object> transBean2Map(Object obj) { if(obj == null){ return null; } Map<String, Object> map = new HashMap<String, Object>(); try { BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); // 过滤class属性 if (!key.equals("class")) { // 得到property对应的getter方法 Method getter = property.getReadMethod(); Object value = getter.invoke(obj); map.put(key, value); } } } catch (Exception e) { System.out.println("transBean2Map Error " + e); } return map; } /** * <p class="detail"> * 功能:将大写转为下划线,且小写 如: userName > user_name * </p> * @author wuxw * @param name * @return * @throws */ static String underscoreName(String name) { StringBuilder result = new StringBuilder(); if ((name != null) && (name.length() > 0)) { result.append(name.substring(0, 1).toLowerCase()); for (int i = 1; i < name.length(); ++i) { String s = name.substring(i, i + 1); if (s.equals(s.toUpperCase())) { result.append("_"); result.append(s.toLowerCase()); } else { result.append(s); } } } return result.toString(); }}原创:点击打开链接
阅读全文
0 0
- Map与Bean互转(下划线转大写)
- bean 与 map 互转.
- Util map与Bean互转
- java Map与bean互转
- 去掉下划线并转首字母为大写
- <转>BeanUtils Map与Bean转换
- Map to Bean map 转 bean
- powerdesigner里面用vb实现去下划线转首字母大写
- map 转 bean
- java Bean转Map
- java map 转 bean
- java map转bean
- java-map转bean
- Map转bean多类型转换,bean转map
- list 、map、bean、json互转
- 字符串处理(单词首字母大写,数字与字母用下划线隔开,多个空格合并)
- 驼峰式命名的字符串与数据库字段下划线大写方式的转换
- List<map>转List<bean>
- java ArrayList
- 系统学习 jQuery (一) 核心
- 常见5中并发集合的对比总结
- HackerRank Twin Arrays 题解
- syncronized重入的几种方式
- Map与Bean互转(下划线转大写)
- 升级glibc到glibc-2.14 解决version `GLIBC_2.14' not found 问题
- Spring Boot多数据源配置(二)MongoDB
- <转>for in、经典for循环和EnumerateObjectsUsingBlock
- WAS服务器部署JAVA WEB项目的Web.xml文件更新问题
- js动态设置页面的字体大小
- 《简明Python教程》之运算符与表达式
- iOS 自定义滚动条,可展示交互 —— HERO博客
- 视频大小计算