实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public static class Student {
private Long termId;//学期id
private Long classId;//班级id
private Long studentId;//班级id
private String name;//学生名称
}
转换工具类
public class PojoUtil {
public static Map<String, Object> pojoToMap(Object object) {
Map<String, Object> map = new HashMap();
Field[] fields = object.getClass().getDeclaredFields();//暴力反射获取所有字段
for (Field field : fields) {
field.setAccessible(true);
try {
if (field.get(object) != null) {
map.put(field.getName(), field.get(object));
}
} catch (Exception e) {
e.printStackTrace();
}
}
return map;
}
public static Object mapToPojo(Map<String, Object> map, Class<?> pojo) {
Object object = null;
try {
object = pojo.newInstance();
Field[] fields = object.getClass().getDeclaredFields();
for (Field field : fields) {
int modifier = field.getModifiers();
if (Modifier.isStatic(modifier) || Modifier.isFinal(modifier)) {
continue;
}
field.setAccessible(true);
field.set(object, map.get(field.getName()));
}
} catch (Exception e) {
e.printStackTrace();
}
return object;
}
}
测试效果
public class PojoTest {
public static void main(String[] args) {
Student student = new Student(1l, null, 2l, "ccc");
Map<String, Object> dataMap = PojoUtil.pojoToMap(student);
System.out.println(dataMap);
System.out.println(PojoUtil.mapToPojo(dataMap, Student.class));
}
输出结果:
{studentId=2, termId=1, name=ccc}
PojoTest.Student(termId=1, classId=null, studentId=2, name=ccc)