应用场景:使用Hibernate查询的时候查询结果经常会需要返回一个Map,这个时候就需要把Map转换成对应的Bean对象以适用于业务的需要。懒人就的事情就是写些工具类来实现这些操作。
package com.test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public class ConvertUtil {
public static void main(String[] args) {
ConvertUtil convertUtil = new ConvertUtil();
Map<String, String> map = new HashMap<String, String>();
map.put("NAME", "name1");
map.put("SEX", "sex1");
Person person1=new Person();
try {
person1 = (Person) convertUtil.convert2Bean(map, person1);
System.out.println(person1.getName());
System.out.println(person1.getSex());
} catch (Exception e) {
e.printStackTrace();
}
}
public static final String setMethodModify = "set";
public Object convert2Bean(Map<String, String> map, Object obj) {
Class class1 = obj.getClass();
Method[] methods = class1.getMethods();
for (Method method : methods) {
String methodName = method.getName();
if (methodName.startsWith(ConvertUtil.setMethodModify)) {
String propertyName = methodName.substring(3).toUpperCase(
Locale.getDefault());
String value = map.get(propertyName);
try {
method.invoke(obj, value);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
return obj;
}
}
class Person {
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}