(1) Add MyBeanMap
public class MyBeanMap extends HashMap<String, Object> {
private Object bean;
public Object getBean() {
return bean;
}
public void setBean(Object bean) {
this.bean = bean;
}
public Object put0(String key, Object value) {
return super.put(key, value);
}
//更新map,更新bean
@Override
public Object put(String key, Object value) {
Field field = ReflectionUtils.findField(bean.getClass(), key);
//修改bean
if (field != null) {
boolean accessible = field.isAccessible();
try {
if (!accessible) {
ReflectionUtils.makeAccessible(field);
}
ReflectionUtils.setField(field, bean, value);
} finally {
if (!accessible) {
field.setAccessible(accessible);
}
}
}
return super.put(key, value);
}
public Object get(String key) {
//bean用法
return super.get(key);
}
}
(2) Add MyBeanMapUtils
import org.springframework.util.ReflectionUtils;
public class MyBeanMapUtils {
public static MyBeanMap create(Object bean) {
MyBeanMap map = new MyBeanMap();
map.setBean(bean);
//1.首次初始化map
ReflectionUtils.doWithFields(bean.getClass(), field -> {
field.setAccessible(true);
Object value = ReflectionUtils.getField(field, bean);
if (value != null) {
map.put0(field.getName(), value);
}
});
return map;
}
}
(2) Add reference:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
(3) Modify code:
BeanMap dataMap = BeanMapUtils.create(resultModel);
For:
MyBeanMap dataMap=MyBeanMapUtils.create(resultModel);