java工具类

您所在的位置:网站首页 将实体类转换成map java工具类

java工具类

2023-08-24 18:35| 来源: 网络整理| 查看: 265

工作常常遇到将java的Bean对象转化为Map,或者将Map转为Bean对象。

常见的手段

通过json工具,将Bean转json,再将json转Map

效率低

jdk的反射,获取类的属性,进行转化

比较麻烦,书写代码比较多

通过工具类BeanMap来完成

效率高,底层也是基于反射,不过做了些优化,比如缓存等手段 (推荐)

通过Apache的BeanUtils来完成

bean转化map是Map类型

循环转化1w次,对比下BeanMap和BeanUtils的耗时(毫秒)

方式bean转mapmap转beanBeanMap593364BeanUtils12542430

由上测试结果,我们可以看出BeanMap效率高,所以推荐使用BeanMap

更多内容可以关注:iworkh博客

1.BeanMap方式

BeanMap是org.springframework.cglib.beans.BeanMap,在springcore中

1-1.工具类BeanMapTool package com.iworkh.test.restassured.utils; import org.springframework.cglib.beans.BeanMap; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * bean和map互转 * * @author: iworkh-沐雨云楼 * @date: 2020-06-18 */ public class BeanMapTool { public static Map beanToMap(T bean) { BeanMap beanMap = BeanMap.create(bean); Map map = new HashMap(); beanMap.forEach((key, value) -> { map.put(String.valueOf(key), value); }); return map; } public static T mapToBean(Map map, Class clazz) throws IllegalAccessException, InstantiationException { T bean = clazz.newInstance(); BeanMap beanMap = BeanMap.create(bean); beanMap.putAll(map); return bean; } public static List objectsToMaps(List objList) { List list = new ArrayList(); if (objList != null && objList.size() > 0) { Map map = null; T bean = null; for (int i = 0, size = objList.size(); i List list = new ArrayList(); if (maps != null && maps.size() > 0) { Map map = null; for (int i = 0, size = maps.size(); i @Test public void testBeanToMap() { String[] hobbies = {"football", "sing"}; UserVo user = new UserVo(1, "zhangsan", System.currentTimeMillis(), false, Arrays.asList(hobbies)); Map map = BeanMapTool.beanToMap(user); System.out.println(map.get("name")); } @Test public void testMapToBean() { String[] hobbies = {"football", "sing"}; Map map = new HashMap(); map.put("id", 1); map.put("name", "zhangsan"); map.put("birthday", System.currentTimeMillis()); map.put("vip", false); map.put("hobbies", Arrays.asList(hobbies)); try { UserVo userVo = BeanMapTool.mapToBean(map, UserVo.class); System.out.println(userVo.getHobbies()); } catch (IllegalAccessException | InstantiationException e) { e.printStackTrace(); } } } 2.BeanUtils方式

导入pom依赖

commons-beanutils commons-beanutils 1.9.3 2-1.工具类BeanUtilsTool package com.iworkh.test.restassured.utils; import org.apache.commons.beanutils.BeanUtils; import java.lang.reflect.InvocationTargetException; import java.util.Map; /** * Apache BeanUtils工具类 * * @author: iworkh-沐雨云楼 * @date: 2020-06-19 */ public class BeanUtilsTool { public static Map beanToMap(T bean) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException { return BeanUtils.describe(bean); } public static T mapToBean(Map map, Class bean) throws IllegalAccessException, InstantiationException, InvocationTargetException { T t = bean.newInstance(); BeanUtils.populate(t, map); return t; } } 2-2.调用 public class BeanUtilsToolTest { @Test public void testBeanToMap() { String[] hobbies = {"football", "sing"}; UserVo user = new UserVo(1, "zhangsan", System.currentTimeMillis(), false, Arrays.asList(hobbies)); try { Map map = BeanUtilsTool.beanToMap(user); System.out.println(map.get("name")); } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); } } @Test public void testMapToBean() { String[] hobbies = {"football", "sing"}; Map map = new HashMap(); map.put("id", 1); map.put("name", "zhangsan"); map.put("birthday", System.currentTimeMillis()); map.put("vip", false); map.put("hobbies", Arrays.asList(hobbies)); try { UserVo userVo = BeanUtilsTool.mapToBean(map, UserVo.class); System.out.println(userVo.getHobbies()); } catch (IllegalAccessException | InstantiationException | InvocationTargetException e) { e.printStackTrace(); } } }

更多内容可以关注:iworkh博客



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3