方式一:使用JSON方式转换
1. 在中引入依赖包
<dependency>
<groupId></groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
2. 类型转换
package com.wb.workbook.util;
import com.alibaba.fastjson.JSON;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
public class ConvertEntityUtils {
public static void main(String[] args) {
Map<String, Object> dataMap = new HashMap<>(16);
dataMap.put("id", "123");
dataMap.put("name", "zhangsan");
dataMap.put("age", 20);
UserEntity userEntity = JSON.parseObject(JSON.toJSONString(dataMap), UserEntity.class);
System.out.println(JSON.toJSONString(userEntity));
Map map = JSON.parseObject(JSON.toJSONString(userEntity), Map.class);
System.out.println(JSON.toJSONString(map));
}
@Data
private static class UserEntity {
private String id;
private String name;
private Integer age;
}
}
方式二:使用反射方式转换
1. 执行转换方法
public static void main(String[] args) {
Map<String, Object> dataMap = new HashMap<>(16);
dataMap.put("id", "123");
dataMap.put("name", "zhangsan");
dataMap.put("age", 20);
UserEntity userEntity = mapToEntity(dataMap, UserEntity.class);
System.out.println(JSON.toJSONString(userEntity));
Map<String, Object> map = entityToMap(userEntity);
System.out.println(JSON.toJSONString(map));
}
2. UserEntity实体类
@Data
private static class UserEntity {
private String id;
private String name;
private Integer age;
}
3. 使用反射方式进行转换
package com.wb.workbook.util;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class ConvertEntityUtils {
public static <T> T mapToEntity(Map<String, Object> dataMap, Class<T> clazz) {
try {
T obj = clazz.newInstance();
for (Map.Entry<String, Object> entityKey : dataMap.entrySet()) {
String fieldName = entityKey.getKey();
Field field = clazz.getDeclaredField(fieldName);
if (!field.isAccessible()) {
field.setAccessible(true);
}
field.set(obj, entityKey.getValue());
}
return obj;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("mapToEntity is error!");
}
}
public static <T> Map<String, Object> entityToMap(T entity) {
try {
Map<String, Object> resultMap = new HashMap<>(16);
Class<?> clazz = entity.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
String fieldName = field.getName();
Object fieldValue = field.get(entity);
resultMap.put(fieldName, fieldValue);
}
return resultMap;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("entityToMap is error!");
}
}
}
方式三:使用stream进行实体类转换map
1. 执行转换方法
public static void main(String[] args) {
UserEntity userEntity = new UserEntity();
userEntity.setId("123");
userEntity.setName("zhangsan");
userEntity.setAge(20);
Map<String, Object> map = convertEntityToMap(userEntity);
System.out.println(JSON.toJSONString(map));
}
2. UserEntity实体类
@Data
private static class UserEntity {
private String id;
private String name;
private Integer age;
}
3. 使用stream进行转换
public static <T> Map<String, Object> convertEntityToMap(T entity) {
Map<String, Object> map = Arrays.stream(entity.getClass().getDeclaredFields())
.peek(field -> field.setAccessible(true))
.collect(Collectors.toMap(Field::getName, field -> {
try {
return field.get(entity);
} catch (IllegalAccessException e) {
throw new RuntimeException("convertEntityToMap is error!");
}
}));
return map;
}