Jakarta Commons BeanUtils 學(xué)習(xí)
Posted on 2007-08-10 10:36 G_G 閱讀(1267) 評論(0) 編輯 收藏 所屬分類: Jakarta Commons參考:http://www.duduwolf.com/wiki/2007/296.html
????? http://www.chinaitpower.com/A/2005-07-03/150232.html
1)普通的Bean處理? 不管是什么Set參數(shù)為3個 ( 對象本身, 屬性名或?qū)傩詢?nèi)位置, 值 ) //list的add有點(diǎn)特別
??? ??? ??? ??? ? ??? ??? ? Get參數(shù)為2個( 對象本身, 屬性名或?qū)傩詢?nèi)位置 )
??
2)動態(tài)屬性
3)JDBC 擴(kuò)展
4)HttpServletRequest 擴(kuò)展
????? http://www.chinaitpower.com/A/2005-07-03/150232.html
1)普通的Bean處理? 不管是什么Set參數(shù)為3個 ( 對象本身, 屬性名或?qū)傩詢?nèi)位置, 值 ) //list的add有點(diǎn)特別
??? ??? ??? ??? ? ??? ??? ? Get參數(shù)為2個( 對象本身, 屬性名或?qū)傩詢?nèi)位置 )
??
????????Employee?em?=?new?Employee();? //String name; String[] ss;? Map map; List list;
????????BeanUtils.setProperty(em,"name","liukaiyi");? //String set
????????BeanUtils.setProperty(em,"ss",new?String[]{"1","2","3"}); //String[] set
??????? ?? BeanUtils.setProperty(em,"ss[2]","google");? //String[2] set
????????BeanUtils.setProperty(em,"map",new?HashMap());?? //Map set?
????????????BeanUtils.setProperty(em,"map(key)","value");? //Map.put(Key,Value)
????????????
????????BeanUtils.setProperty(em,"list",new?ArrayList(?Arrays.asList(?new?Object[20]?)?)); //List有點(diǎn)特別
????????????BeanUtils.setProperty(em,"list[0]","list");?????? //不可以直接添加???
????????????
????????BeanUtils.setProperty(em,"avg","23");?????? //int set
????????????????
????????
????????System.out.println(?BeanUtils.getSimpleProperty(em,"name")?);???
????????System.out.println(?BeanUtils.getProperty(em,"ss[2]")?);
????????System.out.println(?BeanUtils.getProperty(em,"map(key)")?);
????????
????????System.out.println(?BeanUtils.getProperty(em,"list[0].class")?);? // 取的是 ==list.get(0).getClass()
????????
????????System.out.println(?BeanUtils.getProperty(em,"avg")?);?
????????BeanUtils.setProperty(em,"name","liukaiyi");? //String set
????????BeanUtils.setProperty(em,"ss",new?String[]{"1","2","3"}); //String[] set
??????? ?? BeanUtils.setProperty(em,"ss[2]","google");? //String[2] set
????????BeanUtils.setProperty(em,"map",new?HashMap());?? //Map set?
????????????BeanUtils.setProperty(em,"map(key)","value");? //Map.put(Key,Value)
????????????
????????BeanUtils.setProperty(em,"list",new?ArrayList(?Arrays.asList(?new?Object[20]?)?)); //List有點(diǎn)特別
????????????BeanUtils.setProperty(em,"list[0]","list");?????? //不可以直接添加???
????????????
????????BeanUtils.setProperty(em,"avg","23");?????? //int set
????????????????
????????
????????System.out.println(?BeanUtils.getSimpleProperty(em,"name")?);???
????????System.out.println(?BeanUtils.getProperty(em,"ss[2]")?);
????????System.out.println(?BeanUtils.getProperty(em,"map(key)")?);
????????
????????System.out.println(?BeanUtils.getProperty(em,"list[0].class")?);? // 取的是 ==list.get(0).getClass()
????????
????????System.out.println(?BeanUtils.getProperty(em,"avg")?);?
2)動態(tài)屬性
?//定義動態(tài)屬性集
?DynaProperty[]?props?=?new?DynaProperty[]{
????new?DynaProperty("address",?java.util.Map.class),
????new?DynaProperty("subordinate",?mypackage.Employee[].class),
????new?DynaProperty("firstName",?String.class),
????new?DynaProperty("lastName",??String.class)
??????};
?//創(chuàng)建動態(tài)類來設(shè)定動態(tài)屬性值
????BasicDynaClass?dynaClass?=?new?BasicDynaClass("employee",?null,?props);
??? DynaBean?employee?=?dynaClass.newInstance();
????employee.set("address",?new?HashMap());
????employee.set("subordinate",?new?mypackage.Employee[0]);
????employee.set("firstName",?"Fred");
????employee.set("lastName",?"Flintstone");
//也可以同上一樣 提供統(tǒng)一 的Get Set 還是 字符操作 ^o^? 哈哈
??? ???? BeanUtils.setProperty(bean,"address",new HashMap());
??? ??? ???? BeanUtils.setProperty(bean,"address(ads1)","江西");
??? ??? ?BeanUtils.setProperty(bean,"name","liu");
??? ??? ?BeanUtils.setProperty(bean,"subordinate",new String[3]);
??? ??? ???? BeanUtils.setProperty(bean,"subordinate[1]","heha");
??? ??? ?System.out.println(? BeanUtils.getProperty(bean,"address(ads1)") );
??? ??? ?System.out.println(? BeanUtils.getProperty(bean,"name") );
??? ??? ?System.out.println(? BeanUtils.getProperty(bean,"subordinate[1]") );
?DynaProperty[]?props?=?new?DynaProperty[]{
????new?DynaProperty("address",?java.util.Map.class),
????new?DynaProperty("subordinate",?mypackage.Employee[].class),
????new?DynaProperty("firstName",?String.class),
????new?DynaProperty("lastName",??String.class)
??????};
?//創(chuàng)建動態(tài)類來設(shè)定動態(tài)屬性值
????BasicDynaClass?dynaClass?=?new?BasicDynaClass("employee",?null,?props);
??? DynaBean?employee?=?dynaClass.newInstance();
????employee.set("address",?new?HashMap());
????employee.set("subordinate",?new?mypackage.Employee[0]);
????employee.set("firstName",?"Fred");
????employee.set("lastName",?"Flintstone");
//也可以同上一樣 提供統(tǒng)一 的Get Set 還是 字符操作 ^o^? 哈哈
??? ???? BeanUtils.setProperty(bean,"address",new HashMap());
??? ??? ???? BeanUtils.setProperty(bean,"address(ads1)","江西");
??? ??? ?BeanUtils.setProperty(bean,"name","liu");
??? ??? ?BeanUtils.setProperty(bean,"subordinate",new String[3]);
??? ??? ???? BeanUtils.setProperty(bean,"subordinate[1]","heha");
??? ??? ?System.out.println(? BeanUtils.getProperty(bean,"address(ads1)") );
??? ??? ?System.out.println(? BeanUtils.getProperty(bean,"name") );
??? ??? ?System.out.println(? BeanUtils.getProperty(bean,"subordinate[1]") );
3)JDBC 擴(kuò)展
?Connection?conn?=?
;
????Statement?stmt?=?conn.createStatement();
????ResultSet?rs?=?stmt.executeQuery
????("select?accountid,?name?from?customers");
????Iterator?rows?=?(new?ResultSetDynaClass(rs)).iterator();? //ResultSetDynaClass(java.sql.ResultSet resultSet)
????while?(rows.hasNext())?{
?//利用動態(tài)bean進(jìn)行輸出
????DynaBean?row?=?(DynaBean)?rows.next();?? //連實(shí)體Bean都可以不要了?
??? ??? BeanUtils.copyProperties( MyBean ,row );? //? bean<--dynaBean 就這樣去得到值 ^o^?
??? ?? ?? MyBean.getAccountid();? ....???????????
????}
????rs.close();
????stmt.close();

????Statement?stmt?=?conn.createStatement();
????ResultSet?rs?=?stmt.executeQuery
????("select?accountid,?name?from?customers");
????Iterator?rows?=?(new?ResultSetDynaClass(rs)).iterator();? //ResultSetDynaClass(java.sql.ResultSet resultSet)
????while?(rows.hasNext())?{
?//利用動態(tài)bean進(jìn)行輸出
????DynaBean?row?=?(DynaBean)?rows.next();?? //連實(shí)體Bean都可以不要了?
??? ??? BeanUtils.copyProperties( MyBean ,row );? //? bean<--dynaBean 就這樣去得到值 ^o^?
??? ?? ?? MyBean.getAccountid();? ....???????????
????}
????rs.close();
????stmt.close();
4)HttpServletRequest 擴(kuò)展
????HttpServletRequest?request?=?
;
????MyBean?bean?=?
;
????HashMap?map?=?new?HashMap();
????Enumeration?names?=?request.getParameterNames();
????while?(names.hasMoreElements())?{
??????String?name?=?(String)?names.nextElement();
??????map.put(name,?request.getParameterValues(name));
????}
????BeanUtils.populate(bean,?map);//bean<--map? struts好象是就用這個 Form

????MyBean?bean?=?

????HashMap?map?=?new?HashMap();
????Enumeration?names?=?request.getParameterNames();
????while?(names.hasMoreElements())?{
??????String?name?=?(String)?names.nextElement();
??????map.put(name,?request.getParameterValues(name));
????}
????BeanUtils.populate(bean,?map);//bean<--map? struts好象是就用這個 Form