动态bean

最近在开发项目中碰到需要动态写bean的问题,于是就拿出来和大家分享一下。

用到的是net.lib.cglib.jar

自己写的Utils类

public class GeneralCglibBean {
	
	private BeanMap beanMap = null;
	
	//propertyMap必须是String和String,前者表示bean的属性名,后者为bean的属性类型
	//eg:public String name;则propertyMap.put("name","java.lang.String");
	//如果是int等基本类型,则使用它的扩展类,比如Integer。
	public GeneralCglibBean(Map<String, String> propertyMap) throws ClassNotFoundException{
		this.CreateGenaralBean(propertyMap);
	}
	
	private void CreateGenaralBean(Map<String, String> propertyMap) throws ClassNotFoundException{
		BeanGenerator beanGenerator = new BeanGenerator();
		
		Set<String> keySet = propertyMap.keySet();
		for(Iterator<String> i = keySet.iterator();i.hasNext();){
			String key = (String)i.next();
			beanGenerator.addProperty(key, (Class<?>)Class.forName(propertyMap.get(key)));
		}
		Object genaralBean = beanGenerator.create();
		this.beanMap = BeanMap.create(genaralBean);
	}
	
	//设值
	public void setValue(String property, Object value){
		beanMap.put(property, value);
	}
	
	//取值
	public Object getValue(String property){
		return beanMap.get(property);
	}
}

使用方法如下:


public class TestGeneralCglibBean {

	public static void main(String[] args) {
		Map<String, String> propertyMap = new HashMap<String, String>();
		propertyMap.put("id", "java.lang.Integer");
		propertyMap.put("name", "java.lang.String");
		GeneralCglibBean bean = null;
		try {
			bean = new GeneralCglibBean(propertyMap);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		bean.setValue("id", 1);
		bean.setValue("name", "huang");
		
		System.out.println("Id:"+(Integer)bean.getValue("id")+"   Name:"+(String)bean.getValue("name"));
	}
}

输出结果:

Id:1   Name:huang

如果需要动态生成,则加个循环即可。存入List。当碰到这样的需求时,就不用每个table都写一个bean了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值