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);

你可能感兴趣的:(apache,oracle,sql,bean,jdbc)