注:文章皆为个人纪录,可用性请以最终结果为准,若有错还请大佬们指出,谢谢!
方式一:Hutool 步骤一:引入依赖工具作用:
JavaBean 与 Map 的互相转换
步骤二:调用方式5.6.6 cn.hutool hutool-all${hutool.util.version}
package cn.hutool.core.bean 包下的 BeanUtil
package com.paycool.inpay.core.utils;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class BeanMapUtils {
public static Map beanToMap(Object bean) {
if (bean == null) {
return null;
} else {
HashMap hashMap = new HashMap<>();
try {
Class> c = bean.getClass();
Method[] methods = c.getMethods();
for (Method method : methods) {
String name = method.getName();
String key = "";
if (name.startsWith("get")) {
key = name.substring(3);
}
if (key.length() > 0 && Character.isUpperCase(key.charAt(0)) && method.getParameterTypes().length == 0) {
if (key.length() == 1) {
key = key.toLowerCase();
} else if (!Character.isUpperCase(key.charAt(1))) {
key = key.substring(0, 1).toLowerCase() + key.substring(1);
}
if (!"class".equals(key.toLowerCase())) {
Object value = method.invoke(bean);
if (value != null) {
hashMap.put(key, value);
}
}
}
}
} catch (Throwable var9) {
var9.printStackTrace();
}
return hashMap;
}
}
public static T mapToBean(Class clazz, Map map) {
T bean = null;
try {
bean = clazz.newInstance();
for (Map.Entry stringObjectEntry : map.entrySet()) {
String key = stringObjectEntry.getKey();
Object value = stringObjectEntry.getValue();
// 去这个类及其父类递归找到这个属性
Field field = getClassField(clazz, key);
if (field != null) {
// 获取属性的set方法
String methodName = "set" + key.substring(0, 1).toUpperCase() + key.substring(1);
Method method = clazz.getMethod(methodName, field.getType());
method.invoke(bean, value);
}
}
} catch (NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
e.printStackTrace();
}
return bean;
}
private static Field getClassField(Class> clazz, String fieldName) {
Field[] declaredFields = clazz.getDeclaredFields();
for (Field declaredField : declaredFields) {
if (declaredField.getName().equals(fieldName)) {
return declaredField;
}
}
// 如果找不到对应属性。递归去父类找
Class> superclass = clazz.getSuperclass();
if (null != superclass) {
return getClassField(superclass, fieldName);
}
return null;
}
}



