因为mybits 查询 返回map类型,于是做了一个map转 类的一个方法,只适合String
package com.test01.test01;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class MapToClass {
public static void main(String[] args) throws Exception {
Student student = new Student();
Map<String,Object> map = new HashMap<>();
map.put("ID","01");
map.put("NAME","name");
map.put("SEX","boy");
map.put("MY_MONEY","1000");
student = mapTowClass(map,student);
System.out.println(student);
}
public static <T> T mapTowClass(Map<String,Object> map,Object object) throws Exception {
Class<?> clz = object.getClass();
Field[] fields = clz.getDeclaredFields();
for(Field field : fields){
String name = field.getName();
if("class java.lang.String".equals(field.getGenericType().toString())){
String key = classNameToUppercase(name);
Method m = object.getClass().getMethod("set"+getMethodName(name),String.class);
m.invoke(object,String.valueOf(map.get(key)));
}
}
return (T)object;
}
public static String classNameToUppercase(String className){
Map<Integer,String> count = new HashMap<>();
char[] chars = className.toCharArray();
for(int i=0;i<chars.length;i++){
//System.out.println(chars[i]+ "---" + Integer.valueOf(chars[i]));
if(Integer.valueOf(chars[i]) >= 65 && Integer.valueOf(chars[i]) <= 90){
count.put(i,"_");
}
}
StringBuffer sb = new StringBuffer(className.toUpperCase());
for(Map.Entry<Integer,String> entry : count.entrySet()){
Integer index = entry.getKey();
sb.insert(index,entry.getValue());
}
return sb.toString();
}
public static String getMethodName(String fildeName) throws Exception{
byte[] items = fildeName.getBytes();
items[0] = (byte) ((char) items[0] - 'a' + 'A');
return new String(items);
}
}