范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

JavaBeanList与MapList对象转换,支持驼峰命名

  在Java项目开发过程中,经常遇到JavaBean实体转成Map对象,或者Map对象转成JavaBean实体的需求,这里分享个支持驼峰命名的JavaBean与Map对象互转的方法。
  将Map对象转化为JavaBean/**  * 将 Map对象转化为JavaBean  */ public static  T convertMap2Bean(Map map, Class T)     throws Exception {     if(CollectionUtility.isEmpty(map)){         return null;     }     //获取map中所有的key值,全部更新成大写,添加到keys集合中,与mybatis中驼峰命名匹配     Object mvalue = null;     Map newMap = new HashMap<>();     Iterator> it = map.entrySet().iterator();     while (it.hasNext()) {         String key = it.next().getKey();         mvalue = map.get(key);         if (key.indexOf(CharacterConstant.UNDERLINE) != -1) {             key = key.replaceAll(CharacterConstant.UNDERLINE, "");         }         newMap.put(key.toUpperCase(Locale.US), mvalue);     }          BeanInfo beanInfo = Introspector.getBeanInfo(T);     T bean = T.newInstance();     PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();     for (int i = 0, n = propertyDescriptors.length; i < n; i++) {         PropertyDescriptor descriptor = propertyDescriptors[i];         String propertyName = descriptor.getName();         String upperPropertyName = propertyName.toUpperCase();         if (newMap.keySet().contains(upperPropertyName)) {             Object value = newMap.get(upperPropertyName);             BeanUtils.copyProperty(bean, propertyName, value);         }     }     return bean; }
  将JavaBean转化为Map对象/**  * 将一个 JavaBean 对象转化为一个 Map   */ public static Map convertBean2Map(Object bean)     throws IntrospectionException, IllegalAccessException, InvocationTargetException {     Class<? extends Object> type = bean.getClass();     Map returnMap = new HashMap<>();     BeanInfo beanInfo = Introspector.getBeanInfo(type);     PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();     for (int i = 0; i < propertyDescriptors.length; i++) {         PropertyDescriptor descriptor = propertyDescriptors[i];         String propertyName = descriptor.getName();         if (!"class".equals(propertyName)) {             Method readMethod = descriptor.getReadMethod();             Object result = readMethod.invoke(bean, new Object[0]);             if (result != null) {                 returnMap.put(propertyName, result);             }             else {                 returnMap.put(propertyName, null);             }         }     }     return returnMap; }
  完整的转换类import com.base.infrastructure.constant.CharacterConstant; import com.base.infrastructure.log.LoggerManager; import org.apache.commons.beanutils.BeanUtils;  import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.*; import java.util.Map.Entry;  /**  * Map 对象与 JavaBean 对象互转工具类   */ public class BeanToMapUtil {      private BeanToMapUtil() {     }          /**      * 将 Map对象转化为JavaBean      * @param map      * @param T      * @return      * @throws Exception      */     public static  T convertMap2Bean(Map map, Class T)         throws Exception {         if(CollectionUtility.isEmpty(map)){             return null;         }         //获取map中所有的key值,全部更新成大写,添加到keys集合中,与mybatis中驼峰命名匹配         Object mvalue = null;         Map newMap = new HashMap<>();         Iterator> it = map.entrySet().iterator();         while (it.hasNext()) {             String key = it.next().getKey();             mvalue = map.get(key);             if (key.indexOf(CharacterConstant.UNDERLINE) != -1) {                 key = key.replaceAll(CharacterConstant.UNDERLINE, "");             }             newMap.put(key.toUpperCase(Locale.US), mvalue);         }         BeanInfo beanInfo = Introspector.getBeanInfo(T);         T bean = T.newInstance();         PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();         for (int i = 0, n = propertyDescriptors.length; i < n; i++) {             PropertyDescriptor descriptor = propertyDescriptors[i];             String propertyName = descriptor.getName();             String upperPropertyName = propertyName.toUpperCase();             if (newMap.keySet().contains(upperPropertyName)) {                 Object value = newMap.get(upperPropertyName);                 BeanUtils.copyProperty(bean, propertyName, value);             }         }         return bean;     }          /**      * 将一个 JavaBean 对象转化为一个 Map       * @param bean      * @return      * @throws IntrospectionException      * @throws IllegalAccessException      * @throws InvocationTargetException      */     public static Map convertBean2Map(Object bean)         throws IntrospectionException, IllegalAccessException, InvocationTargetException {         Class<? extends Object> type = bean.getClass();         Map returnMap = new HashMap<>();         BeanInfo beanInfo = Introspector.getBeanInfo(type);         PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();         for (int i = 0; i < propertyDescriptors.length; i++) {             PropertyDescriptor descriptor = propertyDescriptors[i];             String propertyName = descriptor.getName();             if (!"class".equals(propertyName)) {                 Method readMethod = descriptor.getReadMethod();                 Object result = readMethod.invoke(bean, new Object[0]);                 if (result != null) {                     returnMap.put(propertyName, result);                 }                 else {                     returnMap.put(propertyName, null);                 }             }         }         return returnMap;     }          /**      * 将 List对象转化为List      * @param listMap      * @param T      * @return      * @throws Exception      */     public static  List convertListMap2ListBean(List> listMap, Class T)         throws Exception {         List beanList = new ArrayList<>();         if (listMap != null && !listMap.isEmpty()) {             for (int i = 0, n = listMap.size(); i < n; i++) {                 Map map = listMap.get(i);                 T bean = convertMap2Bean(map, T);                 beanList.add(bean);             }             return beanList;         }         return beanList;     }          /**      * 将 List对象转化为List      * @param beanList      * @return      * @throws Exception      */     public static  List> convertListBean2ListMap(List beanList, Class T) {         List> mapList = new ArrayList<>();         try {             for (int i = 0, n = beanList.size(); i < n; i++) {                 Object bean = beanList.get(i);                 Map map = convertBean2Map(bean);                 mapList.add(map);             }         }         catch (Exception e) {             LoggerManager.error(T, e, "将 List对象转化为List失败, beanList:{}", beanList);             return mapList;         }         return mapList;     } }

只要两步使得现场扩声效果更完美阜新声艺视听现场扩声系统的调试与安装是个庞大的系统工程,尤其是在大型演出的扩声系统当中,主调音师必须具有丰富的现场经验宏观且清晰的系统思路过人的胆识与处变不惊的平稳心境,以及每位团队工作者细致舞台灯光设计详解,入门很简单阜新声艺视听早期戏剧演出为露天或半露天演出,都是以单一的日光为光源。但随着演出场所搬进室内或夜间演出,开始出现了舞台灯光。时常有这么几个问题萦绕于心,一个剧院有必要在舞台和观众厅布置那么多灯具会议扩声系统需要注意的三个事项阜新声艺视听会议场所扩声系统分为两种,一种是多功能厅扩声系统,另外一种是会议扩声系统。多功能会议室在进行会议报告等活动之外,也是职工进行娱乐休闲活动的场所,如进行歌舞音乐戏剧等等文艺表演,要求华为鸿蒙打印机来了,真的带来了打印机革命吗?今天(2021年9月13日)晚上华为智慧办公场景新品发布会上,华为平板与PC产品线总裁王银锋为用户带来了一款华为18N的新家庭成员,华为PixladX1黑白激光打印机。期待以鸿蒙的华为徐直军做好战地复盘,识别战地英雄2021年9月22日,华为公司总裁办发送华为轮值董事长徐直军的讲话做好战地复盘,识别战地英雄。讲话指出,复盘是每一个项目在关键里程碑或项目结束时的总结活动,要不断的总结和提升作战能12不香13香,苹果发布最新款iphone13北京时间9月15日凌晨1时,苹果在线上发布了秋季新款,包括iPhone13系列手机,新款iPadMini6,iPad,苹果手表等多款新品。其中最亮眼的,还属13香的iPhone13如何延长视频信号的传输距离,使传输无失真?阜新声艺视听如何解决视频信号长距离传输无失真问题,始终是制约视频信号快速发展的头等问题。由于视频信号长距离传输,传输过程必要考虑包括线阻电磁干扰线材强度施工难度抗自然老化等等各种问题。这样,就酒吧舞台激光灯,这样设计更有气氛阜新声艺视听对于酒吧来说,灯光设计至关重要,设计酒吧舞台激光灯也不是一件容易的事情,要设计出与主题相匹配的舞台激光灯,需要经过许多繁琐的步骤严格的计算和测量。KVANT激光灯公司是世界上顶尖的KTV音响该怎么调低音效果最好?阜新声艺视听低音炮存在哪些问题有些对音响效果要求较高愿意花钱做隔音的消费者,就会在KTV包厢里面搭配低音炮。但是在搭配低音炮的同时,有哪些需要注意的事情,该怎么调低音效果最好?这次我(张启东)杜比视界和杜比全景声应用的新趋势阜新声艺视听以智慧全媒体5G新视听为主题的CCBN2021展会(5月28日至30日)在北京正式拉开帷幕。杜比实验室携手众多行业合作伙伴亮相展会,展示杜比视界(DolbyVision)HDR影像比亚迪唐dmi值得入手?第一辆车是福特,开了大概8年之久。前段时间就准备换个车,预算在30,最高不超过35,因为好奇和空间的需求想试一试suv的感觉,因为脑子里被灌输了里程焦虑的概念。对于纯电车无感,需求
35岁腾讯员工提前退休,他的底气,是多数人一辈子奋斗不来的职场没有想象中的那么轻松,尤其是生活在社会底层的人,每天为了廉价的薪资,生病了不敢请假,不敢轻易地参加任何活动。赚不到钱,自然也存不到钱。想要在大城市扎根立足就更加的不容易了。虽然本年度最成功的黑客攻击,作案人竟然有可能是内鬼?这个世界上的任何事情,都是关联的。所以说太平洋上一只蝴蝶轻轻扇动翅膀,就能引起太平洋的风暴这句话,有时候还真是正确。5月10日,美国燃气管道运营商科洛尼尔管道运输公司(Coloni见好就收!讹了美国公司500万美元后,黑客团伙就地解散了攻击美国最大汽油管道商ColonialPipeline的黑客组织DarkSide宣布正在解散。5月14日周五,网络安全研究公司FireEye称,DarkSide告诉团伙成员,其因执腾讯投资版图浮出水面,已投资927家公司,其中70多家为上市公司所有成功的企业,都是乘着时代的旋风而起,企业要想保持成功,一定要懂得敬天!如老子所言反者道之动,弱者道之用,没有哪一个大企业会一直屹立不倒,把自己摆在弱者的位置上,反而可能强大起来4月销量超特斯拉获第一,少见能加油的电动车,理想ONE产品力如何现在汽车行业正在向新能源车逐渐转型,刚刚结束的上海车展中,BBA分别带来了各自的旗舰电动车,中国品牌也有更多新兴的新能源车型,这其中理想蔚来小鹏当属第一梯队,每家的销量都不差,稳定法国最大5G网络已覆盖52人口,得益于700MHz频率据外媒5月14日报道,就覆盖范围而言,法国最大的5G网络FreeMobile以惊人的速度持续扩展。5月12日,伊利亚德(Iliad)子公司FreeMobile副总裁MaximeLo内蒙古移动打造高品质5G网络及应用加速数字化转型从手机支付初试到智慧生活全面开花,从互联网到物联网工业互联网,从大数据到人工智能,从5G商用元年到全球新冠疫情爆发,在充满挑战的时代的裹挟下,信息通信技术对社会持续运转的重要作用日刹车怎么踩都没用,女子驾驶特斯拉突发撞墙事故,维权却被告知路面湿滑刹车怎么踩都没用,女子驾驶特斯拉突发撞墙事故,维权却被告知路面湿滑!自从女车主维权特斯拉事情发生以来全国各地网友对于特斯拉的看法非常的差,事后虽然说特斯拉方面确实进行了回应,但是其最新一日行业资讯北京同城快递包装将推循环箱,返还包装可获寄件优惠近日,北京市场监管局网站发布快递绿色包装使用与评价规范(征求意见稿),其中提出,将在同城快递中推广使用循环箱等可循环使用的快递包装,尼康D800相机3600万像素,而尼康D4相机为什么只有1620万像素却比D800贵?题主这个问题我看回答的不多,确实有这种类似的问题摄影新手还是问的比较多的,只是对于器材方面了解的不够,只是关注相机的像素这一项主要指标,但是单反相机的性能强不强不是光看像素高低的问中国新能源车上演速度与激情(国际论道)来源海外网图为4月上海车展上展出的采用氢燃料电池为动力的国产豪华中巴,该车型将在北京2022冬奥会上投入使用。图为4月上海车展上,观众在参观上汽推出的一款智能电动汽车。本文照片均为