JAVA中map转换成实体对象
2022/3/21 17:28:26
本文主要是介绍JAVA中map转换成实体对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
/**
-
@ClassName:QueryVOToBeanUtil
-
@author: 短笛吟风
-
@description:TODO
-
@createDate: 2020/2/18
-
@version: 1.0
*/
public class QueryVOToBeanUtil {/**
-
将JavaBean转换成Map
-
@param obj
-
@return
-
@throws SecurityException
-
@throws NoSuchMethodException
-
@throws InvocationTargetException
-
@throws IllegalArgumentException
-
@throws IllegalAccessException
*/
public static Map beanToMap(Object obj) throws NoSuchMethodException, SecurityException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
// 创建map集合
Map map = new HashMap();
// 获取JavaBean中所有属性
Field[] fields = obj.getClass().getDeclaredFields();for (Field fie : fields) {
// 将属性第一个字母转换成大写 String frist = fie.getName().substring(0, 1).toUpperCase(); // 获取属性的类型 Class<?> type = fie.getType(); // 封装属性的get String getter = ""; if ("boolean".equals(type.getName())) { getter = "is" + frist + fie.getName().substring(1); } else { getter = "get" + frist + fie.getName().substring(1); } // 获取JavaBean的方法 Method method = obj.getClass().getMethod(getter, new Class[] {}); // 调用方法,并接收返回值 Object objec = method.invoke(obj, new Object[] {}); // 判断返回值不为空 if (objec != null) { map.put(fie.getName(), objec); } else { map.put(fie.getName(), ""); }
}
return map;
}
/**
-
将Map转换为JavaBean
-
@param map
-
@param obj
-
@return
-
@throws SecurityException
-
@throws NoSuchMethodException
-
@throws InvocationTargetException
-
@throws IllegalArgumentException
-
@throws IllegalAccessException
*/
public static Object mapToBean(Map<String, Object> map, Object obj) throws NoSuchMethodException, SecurityException,
IllegalAccessException, IllegalArgumentException, InvocationTargetException {// 获取JavaBean中的所有属性
Field[] field = obj.getClass().getDeclaredFields();for (Field fi : field) {
// 判断key值是否存在
String fildname=addStringXhx(fi.getName());
if (map.containsKey(fildname)) {
// 获取key的value值String value = map.get(fildname).toString(); // 将属性的第一个字母转换为大写 String frist = fi.getName().substring(0, 1).toUpperCase(); // 属性封装set方法 String setter = "set" + frist + fi.getName().substring(1); // 获取当前属性类型 Class<?> type = fi.getType(); // 获取JavaBean的方法,并设置类型 Method method = obj.getClass().getMethod(setter, type); // 判断属性为double类型 if ("java.lang.String".equals(type.getName())) { // 调用当前Javabean中set方法,并传入指定类型参数 method.invoke(obj, value); } else if ("int".equals(type.getName())) { method.invoke(obj, Integer.parseInt(value)); }else if ("double".equals(type.getName())) { method.invoke(obj, Double.valueOf(value)); } else if ("char".equals(type.getName())) { method.invoke(obj, value); } }
}
return obj;
}
private static String addStringXhx(String name) {
StringBuilder stringBuilder=new StringBuilder(name.length()+5); int len=name.length(); for(int i=0;i<len;i++){ char c = name.charAt(i); if(Character.isUpperCase(c)){ stringBuilder.append("_"+Character.toLowerCase(c)); }else{ stringBuilder.append(c); } } return stringBuilder.toString();
}
/**
-
将List<Map<String,Object>>转换成List
-
@param listm
-
@param obj
-
@return
-
@throws InvocationTargetException
-
@throws IllegalArgumentException
-
@throws IllegalAccessException
-
@throws SecurityException
-
@throws NoSuchMethodException
*/
public static List ListMapToListBean(List<Map<String, Object>> listm, Object obj)
throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException,
InvocationTargetException {List list = new ArrayList();
// 循环遍历出map对象
for (Map<String, Object> m : listm) {
// 调用将map转换为JavaBean的方法
Object objs = mapToBean(m, obj);
// 添加进list集合
list.add(objs);
}return list;
}
/**
-
将list转换为List
-
@param list
-
@return
-
@throws NoSuchMethodException
-
@throws SecurityException
-
@throws IllegalAccessException
-
@throws IllegalArgumentException
-
@throws InvocationTargetException
*/
public static List<Map<String, Object>> ListBeanToListMap(List list) throws NoSuchMethodException,
SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
for (Object ob : list) {
listmap.add(beanToMap(ob));
}
return listmap;
}
-
}
这篇关于JAVA中map转换成实体对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?