说明
本例子提供几种:
-
List
-
javabean转换为map
-
list转换为List
-
map转为javabean
实体类:
public class City {
/**
* 城市编号
*/
private Integer id;
/**
* 省份编号
*/
private String provinceId;
/**
* 城市名称
*/
private String cityName;
/**
* 描述
*/
private String description;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getProvinceId() {
return provinceId;
}
public void setProvinceId(String provinceId) {
this.provinceId = provinceId;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
测试类:
public static void main(String[] args) throws Exception {
City city=new City();
city.setDescription("测试");
city.setCityName("城市");
city.setId(1);
city.setProvinceId("省份编号");
//javabean转换为map
Map<String,Object> map=MyListMapUtil.convertBean2Map(city);
map.forEach((k,v)->{
System.out.println("key:"+k+"value:"+v);
});
System.out.println("--------------------");
//list<javabean>转换为List<Map>
List<Object> list=new ArrayList<>();
list.add(city);
List<Map<String,Object>> mp= MyListMapUtil.convertListBean2ListMap(list);
for(int i=0;i<mp.size();i++){
Map<String,Object> one=mp.get(i);
one.forEach ((k,v)->{
System.out.println("key:"+k+"value:"+v);
});
}
System.out.println("=============");
//List<Map>对象转化为List<JavaBean>,convertListMap2ListBean
List<Map<String,Object>> aa=new ArrayList<>();
Map<String,Object> two=new HashMap<String, Object>();
two.put("id","1");
two.put("provinceId","河南");
two.put("cityName","郑州");
two.put("description","成功");
aa.add(two);
List<City> bb=MyListMapUtil.convertListMap2ListBean(aa,City.class);
for(City cc:bb){
System.out.println(cc.getCityName());
}
System.out.println("==============");
//map转为javabean,convertMap2Bean
Map<String,String> pp=new HashMap<>();
pp.put("id","1");
pp.put("provinceId","首都");
pp.put("cityName","北京");
pp.put("description","成功");
City kk= MyListMapUtil.convertMap2Bean(pp,City.class);
System.out.println(kk.getCityName());
}
工具类
import net.sppan.base.entity.City;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
public class MyListMapUtil {
/**
* 将 Map对象转化为JavaBean
* @author loulan
* @param map
* @return Object对象
*/
public static <T> T convertMap2Bean(Map map, Class T) throws Exception {
if(map==null || map.size()==0){
return null;
}
BeanInfo beanInfo = Introspector.getBeanInfo(T);
T bean = (T)T.newInstance();
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (int i = 0, n = propertyDescriptors.length; i <n ; i++) {
PropertyDescriptor descriptor = propertyDescriptors[i];
String propertyName = descriptor.getName();
//将字母大写,这里先注掉,因为本例子直接读取名字匹配即可。
//String upperPropertyName = propertyName.toUpperCase();
if (map.containsKey(propertyName)) {
Object value = map.get(propertyName);
//这个方法不会报参数类型不匹配的错误。
BeanUtils.copyProperty(bean, propertyName, value);
//用这个方法对int等类型会报参数类型不匹配错误,需要我们手动判断类型进行转换,比较麻烦。
//descriptor.getWriteMethod().invoke(bean, value);
//用这个方法对时间等类型会报参数类型不匹配错误,也需要我们手动判断类型进行转换,比较麻烦。
//BeanUtils.setProperty(bean, propertyName, value);
}
}
return bean;
}
/**
* 将 JavaBean对象转化为 Map
* @author loulan
* @param bean 要转化的类型
* @return Map对象
*/
public static Map convertBean2Map(Object bean) throws Exception {
Class type = bean.getClass();
Map returnMap = new HashMap();
BeanInfo beanInfo = Introspector.getBeanInfo(type);
//PropertyDescriptor:属性描述器
PropertyDescriptor[] propertyDescriptors = beanInfo
.getPropertyDescriptors();
for (int i = 0, n = propertyDescriptors.length; i <n ; i++) {
PropertyDescriptor descriptor = propertyDescriptors[i];
String propertyName = descriptor.getName();
if (!propertyName.equals("class")) {
Method readMethod = descriptor.getReadMethod();
//利用反射
Object result = readMethod.invoke(bean, new Object[0]);
if (result != null) {
returnMap.put(propertyName, result);
} else {
returnMap.put(propertyName, "");
}
}
}
return returnMap;
}
/**
* 将 List<Map>对象转化为List<JavaBean>
* @author loulan
* @return Object对象
*/
public static <T> List<T> convertListMap2ListBean(List<Map<String,Object>> listMap, Class T) throws Exception {
List<T> beanList = new ArrayList<T>();
for(int i=0, n=listMap.size(); i<n; i++){
Map<String,Object> map = listMap.get(i);
T bean = convertMap2Bean(map,T);
beanList.add(bean);
}
return beanList;
}
/**
* 将 List<JavaBean>对象转化为List<Map>
* @author loulan
* @return Object对象
*/
public static List<Map<String,Object>> convertListBean2ListMap(List<Object> beanList) throws Exception {
List<Map<String,Object>> mapList = new ArrayList<Map<String,Object>>();
for(int i=0, n=beanList.size(); i<n; i++){
Object bean = beanList.get(i);
Map map = convertBean2Map(bean);
mapList.add(map);
}
return mapList;
}
}
参考
List