JavaBean和Map之间的相互转化

一 JavaBean和Map之间的相互转化

JavaBean和Map相互转换:

Map是由key-value组成,key是不能重复的.

JavaBean是由属性名和属性值组成,属性名是不同的.

如果把JavaBean的属性名看做是Map的key,把属性值看做是Map的value,那么一个Map对象和一个JavaBean是等级的.

------------------------------------------------------------------------------

JavaBean转换为Map对象.

   publicstatic Map<String,Object> bean2map(Object bean){}

Map对象转换为JavaBean.

   publicstatic Objectmap2bean(Map<String,Object> beanMap,Class beanType){}

package com.OSA.Day01.JavaBean_02;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;


//@Setter 	为所有字段生成set方法
//@Getter	为所有字段生成get方法
//@ToString 生成toString()方法

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person_02 {

	private Long id;
	private String firstName;
	private String lastName;
	private boolean man;

	
}
package com.OSA.Day01.JavaBean_02;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

public class BeanUtil {

	public static void main(String[] args) throws Exception {

		
		Map mp =  bean2Map(new Person_02(100L, "liu", "huahua", true));
		System.out.println(mp);
				
		
		 Map mp2 = new HashMap();
		 mp2.put("id", 200L);
		 mp2.put("lastName", "xiaolin");
		 mp2.put("firstName", "zhang");
		 mp2.put("man", false);

		
		 Object obj = map2Ban(mp2, Person_02.class);
		 System.out.println(obj);
	}

	// 把bean转换为map
	public static Map<String, Object> bean2Map(Object bean) throws Exception {

		Map map = new HashMap<String, Object>();
		BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass(),
				Object.class);

		PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
		for (PropertyDescriptor pd : pds) {
			String name = pd.getName();
			Method md = pd.getReadMethod();
			map.put(name, md.invoke(bean));
		}

		return map;
	}

	// 把map转换为bean 并且为属性赋值

	public static <T> T map2Ban(Map<String, Object> beanMap, Class<T> beanType) throws Exception {
		T obj =beanType.newInstance();

		BeanInfo beanInfo = Introspector.getBeanInfo(beanType,
				Object.class);
		PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
		
		for (PropertyDescriptor pd : pds) {
			String name = pd.getName();
			Object value = beanMap.get(name);
			Method md = pd.getWriteMethod();
			md.invoke(obj, value);
		}
		
		return obj;
	}

}

打印结果

{id=100, lastName=huahua, firstName=liu, man=true}
Person_02(id=200, firstName=zhang, lastName=xiaolin, man=false)

猜你喜欢

转载自blog.csdn.net/yezichongchongling/article/details/79252359