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.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import org.apache.commons.beanutils.BeanUtils; /** * Map 对象与 JavaBean 对象互转工具类 * * @author xl.liu */ public class BeanToMapUtil<T> { private final static String UNDERLINE = "_"; private BeanToMapUtil() { // 私有的构造方法 } /** * 将 Map对象转化为JavaBean * * @param map * @param T * @return * @throws Exception * @see [类、类#方法、类#成员] */ public static <T> T convertMap2Bean(Map<String, Object> map, Class<T> T) throws Exception { if (map == null || map.size() == 0) { return null; } // 获取map中所有的key值,全部更新成大写,添加到keys集合中,与mybatis中驼峰命名匹配 Object mvalue = null; Map<String, Object> newMap = new HashMap<>(); Iterator<Entry<String, Object>> it = map.entrySet().iterator(); while (it.hasNext()) { String key = it.next().getKey(); mvalue = map.get(key); if (key.indexOf(BeanToMapUtil.UNDERLINE) != -1) { key = key.replaceAll(BeanToMapUtil.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 * @see [类、类#方法、类#成员] */ public static Map<String, Object> convertBean2Map(Object bean) throws IntrospectionException, IllegalAccessException, InvocationTargetException { Class<? extends Object> type = bean.getClass(); Map<String, Object> 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<Map>对象转化为List<JavaBean> * * @param listMap * @param T * @return * @throws Exception * @see [类、类#方法、类#成员] */ public static <T> List<T> convertListMap2ListBean(List<Map<String, Object>> listMap, Class<T> T) throws Exception { List<T> beanList = new ArrayList<>(); if (listMap != null && !listMap.isEmpty()) { for (int i = 0, n = listMap.size(); i < n; i++) { Map<String, Object> map = listMap.get(i); T bean = convertMap2Bean(map, T); beanList.add(bean); } return beanList; } return beanList; } /** * 将 List<JavaBean>对象转化为List<Map> * * @param beanList * @return * @throws Exception * @see [类、类#方法、类#成员] */ public static <T> List<Map<String, Object>> convertListBean2ListMap(List<T> beanList, Class<T> T) throws Exception { List<Map<String, Object>> mapList = new ArrayList<>(); for (int i = 0, n = beanList.size(); i < n; i++) { Object bean = beanList.get(i); Map<String, Object> map = convertBean2Map(bean); mapList.add(map); } return mapList; } }
相关推荐
在Java开发中,JSON(JavaScript Object ...通过这样的工具类,我们可以简化JSON、Map和JavaBean之间的转换过程,提高代码的可读性和可维护性。在实际开发中,了解并熟练掌握这些转换方法对于处理数据交互至关重要。
Bean与MAP间互转换的工具类。 1.将一个 Map 对象转化为一个 JavaBean,可指定BEAN的类型; 2.将一个 JavaBean 对象转化为一个 HashMap;
`collectionUtils`可能是提供这些转换功能的一个工具类,包含了一系列关于集合操作的实用方法,包括`Map`和`JavaBean`的转换。在实际项目中,这样的工具类能帮助开发者提高代码的可读性和可维护性,避免重复编写转换...
对象与map互相转换工具类
一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List<Map, Object>>结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后...此工程中就是解决List<Map, Object>>转化为JavaBean工具类实现
将list<Map>转换成JavaBean的工具类
JavaBean和Map以及String与JSON之间的转换在Java开发中是非常常见的操作。这涉及到Java对象的序列化和反序列化,通常用于数据交换或持久化存储。以下是对这些转换的详细解释和示例。 1. JavaBean到JSON JavaBean是...
基于Java反射的map自动装配JavaBean工具类设计示例代码 标题 :"基于Java反射的map自动装配JavaBean工具类设计示例代码" 在 Java 开发中,经常需要将 Map 对象自动装配到 JavaBean 对象中,例如在使用 MyBatis 时...
BeanUtil工具类的常用方法一般包括`populate()`或`fillProperties()`等,这些方法接受一个JavaBean实例和一个Map对象作为参数。Map对象中包含了请求参数,键为参数名,值为参数值。工具类通过反射遍历JavaBean的所有...
`JsonUtil.java`看起来是一个自定义的工具类,很可能包含了对`json-lib`和`ezmorph`的封装,提供了简洁易用的API供开发者进行JSON操作。可能包含的方法有`toJson()`(将Java对象转换为JSON字符串)、`fromJson()`...
`commons-beanutils-1.8.0.jar`是Apache Commons BeanUtils的核心库,它提供了一系列实用工具类,帮助开发者处理JavaBean操作。其中,最常用的功能之一就是将Map转换为JavaBean对象,这极大地减少了手动转换的繁琐...
在 Java 开发中,经常需要将 JavaBean 对象和 Map 对象相互转换。例如,在导入数据时,可能需要将 Map 对象转换为 JavaBean 对象,以便更方便地处理数据。本文将介绍 JavaBean 和 Map 相互转换的方法代码示例。 一...
在已经有xml的情况下,快速生成javabean代码,不需要自己再手打大量无聊的代码。
这个工具类的实例可以用于任何场景,其中List中的对象具有特定属性,我们可以利用该属性作为Map的键。例如,如果我们有一个`Person`类,包含`id`和`name`属性,我们可以将一个`Person`对象的列表转换为以`id`为键的...
BeanUtils是一种帮助程序员操作JavaBean的工具类。在classA的mapToObject方法中,通过BeanUtils.populate静态方法可以将Map中的键值对填充到新创建的Java对象的对应属性中。这里的键名需要与JavaBean的属性名相匹配...
1. **JavaBean对象转JSON** JavaBean是一种遵循特定规范的Java类,通常用于封装数据。将JavaBean对象转为JSON时,我们可以使用如Jackson、Gson、Fastjson等流行的JSON库。以Jackson为例,首先需要引入Jackson库的...
于是一怒之下,自己动手丰衣足食,就自己用Swing写了一个通过数据库的表生成JavaBean的工具,支持MySQL、Oracle、SQLServce、PostgreSQL,完美支持JPA注解,可以同时生成Entity和DTO,可以自动去除表前缀,并支持...
MapStruct是一种高效的对象映射框架,它通过注解处理器自动生成类型安全、高性能且无依赖的JavaBean映射代码。在Java开发中,JavaBean之间的转换通常是一个繁琐的任务,尤其是在大型项目中,大量的转换代码不仅影响...
**工具** 如Apache Commons BeanUtils库也可以用来在JavaBean和Map对象之间进行转换,虽然它不直接处理XML,但可以作为进一步转换的基础。此外,一些IDE如Eclipse和IntelliJ IDEA提供了内置的功能来自动生成JavaBean...
5. **使用工具类或方法**:可以创建一个静态方法或者工具类,接收JSON字符串和JavaBean的Class类型作为参数,内部实现转换逻辑,这样在项目中可以复用。 6. **代码示例**:对于Gson库,可以创建一个自定义`...