apache commons beanutils

官网下载jar包
http://commons.apache.org/beanutils/

beanutils对java bean 属性操作

/*
* UserBean
* 所含属性:(get和set方法必须)
* private String name;
private int age;
private Date birth;
private String[] hob;
private Address ads;
private Map school;

*/
UserBean user = new UserBean();
user.setAge(22);
user.setBirth(new Date());
user.setName("bird");
//simple 简单属性 get,set
System.out.println(PropertyUtils.getSimpleProperty(user,"age"));//22
PropertyUtils.setSimpleProperty(user,"age",23);
System.out.println(PropertyUtils.getSimpleProperty(user,"age"));//23
//index 数组属性 get,set
String[] hob = new String[]{"one","two","three"};
user.setHob(hob);//必须先具体对象set后才可以下面的方法,也就是setIndex相当于reset
PropertyUtils.setIndexedProperty(user,"hob[0]","xxx");//第二个参数属性名["+index+"];
System.out.println(PropertyUtils.getIndexedProperty(user,"hob",0));//xx
System.out.println(PropertyUtils.getIndexedProperty(user,"hob[1]"));
//nested 嵌套属性,set,get
Address ads = new Address();
ads.setHome("china");
ads.setPhone("10086");
PropertyUtils.setNestedProperty(user, "ads",ads);
System.out.println(((Address)PropertyUtils.getNestedProperty(user, "ads")).getHome());
//map map属性的set,get
Map map = new HashMap();
map.put("little", "");
user.setSchool(map);//*也需要具体对象初始化
//第二个参数 属性名("+key+");
PropertyUtils.setMappedProperty(user,"school(little)","primary school");
System.out.println(PropertyUtils.getMappedProperty(user, "school(little)"));
PropertyUtils.setMappedProperty(user, "school", "middle", "middle school");
System.out.println(PropertyUtils.getMappedProperty(user,"school","middle"));

//combined 组合属性
PropertyUtils.setMappedProperty(user,"school","high",ads);
Address sads = (Address) PropertyUtils.getMappedProperty(user, "school", "high");
System.out.println(sads.getPhone());

//wrap bean
UserBean user1 = new UserBean();
user1.setName("bean");
WrapDynaBean dyna = new WrapDynaBean(user1);
System.out.println(dyna.get("name")); //bean

//------dyna bean

//定义动态生成的bean所含有的属性
DynaProperty[] props = new DynaProperty[]{
new DynaProperty("name",String.class),//(属性名,类型)
new DynaProperty("birth",java.util.Date.class),
new DynaProperty("hob",String[].class),
new DynaProperty("school",java.util.Map.class)
};
//生成动态bean的class文件(文件名,父类,默认是BasicDynaClass,所含的属性DynaProperty[])
BasicDynaClass dynaClass = new BasicDynaClass("MyDynaClass",null,props);
DynaBean dynaBean = dynaClass.newInstance(); //获取对象实例
//DynaBean set()和get()轻松对属性操作
dynaBean.set("name", "dyna");
dynaBean.set("birth",new Date());
dynaBean.set("hob", new String[]{"1","2"});
System.out.println(((String[])dynaBean.get("hob"))[1]);

//数据库操作,ResultSet的工具类
PreparedStatement pstat = null;
Connection con = null;
Class.forName("oracle.jdbc.driver.OracleDriver");

//con = DriverManager.getConnection("your url", "user","password");
String sql = "select * from gift_send_info";//查询一个表的数据
pstat = con.prepareStatement(sql);
ResultSet rs = pstat.executeQuery();

List list = new ArrayList();
ResultSetDynaClass rsdc = new ResultSetDynaClass(rs);
//从ResultSetDynaClass中获取rs中还有的properties,构造一个DynaClass
BasicDynaClass dynaClass1 = new BasicDynaClass("temp",null,
rsdc.getDynaProperties());
//数据copy
Iterator rows = rsdc.iterator();
while(rows.hasNext()){
DynaBean bean = (DynaBean) rows.next();
DynaBean newBean = dynaClass1.newInstance();
PropertyUtils.copyProperties(newBean, bean);//把数据copy到新bean中
list.add(newBean);
//get()获取两个字段
System.out.println(bean.get("send_id")+"\t"+bean.get("accept_user"));
}

rs.close();
pstat.close();

System.out.println("----------------------");
for(int i=0;i<list.size();i++){
DynaBean bean = (DynaBean) list.get(i);
System.out.println(bean.get("send_address"));
}

pstat = con.prepareStatement(sql);
rs = pstat.executeQuery();
RowSetDynaClass queryRows = new RowSetDynaClass(rs);
//可以立即关闭数据库链接,查询信息已经存储到queryRows里了
//上面的就不可以,必须要等到Iterator遍历完后才能关闭
pstat.close();
rs.close();
pstat.close();
con.close();

List rowDynaBeans = queryRows.getRows();
for(int i=0;i<rowDynaBeans.size();i++){
DynaBean bean = (DynaBean) rowDynaBeans.get(i);
//System.out.println(bean.get("send_address"));
}

//----------工具类
//ConvertUtils.convert(value, clazz);//类型转换
//将一个map[key-value]注入到bean所对应的属性中
//像struts1的actionForm和struts2的action自动完成属性注入
//BeanUtils.populate(Object bean, Map properties);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值