Map与javaBean互相转换工具类
Map与javaBean互相转换工具类,方便使用。工具类及测试方法如下:
工具类BeanMapUtils:
package com.loveneighbor.user.util;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class BeanMapUtils {
public static Map<String, Object> bean2map(Object bean) throws Exception {
Map<String, Object> map = new HashMap<>();
BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass(), Object.class);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
String name = propertyDescriptor.getName();
Method readMethod = propertyDescriptor.getReadMethod();
Object invoke = readMethod.invoke(bean);
map.put(name, invoke);
}
return map;
}
public static <T> T map2bean(Map<String, Object> map, Class<T> clz) throws Exception {
T t = clz.newInstance();
BeanInfo beanInfo = Introspector.getBeanInfo(clz, Object.class);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
String name = propertyDescriptor.getName();
Method writeMethod = propertyDescriptor.getWriteMethod();
Object invoke = writeMethod.invoke(t, map.get(name));
}
return t;
}
}
javaBean例子User:
package com.loveneighbor.user.domain;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class User implements Serializable {
private Integer uid;
private String phone;
private String name;
}
测试类
package com.loveneighbor.user;
import com.loveneighbor.user.domain.User;
import com.loveneighbor.user.util.BeanMapUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@WebAppConfiguration
public class ATests {
@Test
public void bean2mapTest() throws Exception {
User user = new User();
user.setUid(1);
user.setName("名字");
user.setPhone("10086");
Map<String, Object> stringObjectMap = BeanMapUtils.bean2map(user);
System.out.println(stringObjectMap);
}
@Test
public void map2beanTest() throws Exception {
Map<String, Object> map = new HashMap<>();
map.put("uid", 1);
map.put("name", "名字");
map.put("phone", "10086");
User user = new User();
User user1 = BeanMapUtils.map2bean(map, user.getClass());
System.out.println(user1);
}
}