学会使用BeanUtils 来操作bean属性
jopen
11年前
1.导入BeanUtils 的jar包
BeanUtils是第三方jar包,不是sun公司开发的jar包中的jar文件。但是在开发中我们是常使用beanutils来操作javabean。
我们要使用BeanUtils来操作bean属性,那么就必须将其导入到开发环境中。下面先介绍如何将我们要使用的jar导入:
第一步:我们需要到http://archive.apache.org/dist/commons/beanutils/binaries/ 这个网站上下载:
commons-beanutils-1.8.3-bin.tar.gz
第二步:在百度中搜索:commons-logging.jar 并下载
第三步:在MyEclipse中,在你已经建立的project工程名上右键鼠标,新建一个folder,取名:Lib(可以任意命名)。
第四步:将commons-beanutils-1.8.3-bin.tar.gz解压并将其中的commons-beanutils-1.8.3.jar复制到剪贴板,然后在Lib文件夹上粘贴。同样将:commons-logging.jar
在Lib文件夹上粘贴。
第五步:右键Lib文件夹,buildPath即可,就可以看到在工程的下方已经加入到这个jar文件
2.使用BeanUtils来操作bean属性
示例代码:
public class Car { private String name="aaa"; private int size=12; private int people=4; private Date date; public Car(){ } public Car(String name, int size, int people) { super(); this.name = name; this.size = size; this.people = people; } public String getA(){ return null; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSize() { return size; } public void setSize(int size) { this.size = size; } public int getPeople() { return people; } public void setPeople(int people) { this.people = people; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } }
a.改变某一字段的值
Car c=new Car(); BeanUtils.setProperty(c,"name","xcc"); System.out.println(c.getName());
b.BeanUtils 支持将String类型自动转化成基本类型参数。复杂类型不支持
Car c=new Car(); String sname="abcd"; String speople="12"; String ssize="123"; BeanUtils.setProperty(c,"name",sname); BeanUtils.setProperty(c,"weight",speople);//BeanUtils这个类帮助我们将String类型的参数转化为int型 BeanUtils.setProperty(c,"size",ssize); System.out.println(c.getName()); System.out.println(c.getPeople()); System.out.println(c.getSize());BeanUtills使得我们的操作bean属性更加的方便,如当我们在处理用户提交过来的表单时,因为提交的数据都是String类型
c.如果我们要将一个String类型的值 转化成复杂类型的值,那么就要这么做:
下面我们以将一个String类型的值转成我们想要的Date类型的值
Car c=new Car(); String d="1990-07-02"; ConvertUtils.register(new Converter(){ public Object convert(Class type, Object value) { if(value==null)return null; if(!(value instanceof String)) throw new ConversionException("不能转换为String类型"); String str=(String)value; //trim()忽略前导空白和尾部空白 if(str.trim().equals("")) return null; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); try { return sdf.parse(str); } catch (ParseException e) { throw new RuntimeException(e); } } },Car.class);//这是我们自己定义并实现的一个Date类型转换器 //ConvertUtils.register(new DateLocaleConverter(), Car.class);//new DateLocalCXonverter()是API文档中已经被实现了的时间转换器 BeanUtils.setProperty(c, "date", d); System.out.println(c.getDate());
d.将一个map集合中的字段值一次性导入到bean属性中
Car c=new Car(); Map map=new HashMap(); map.put("name", "java");//每个字段对应的值 map.put("people", "12"); map.put("size", "12"); BeanUtils.getCacheFast(map); System.out.println(c.getName()); System.out.println(c.getPeople()); System.out.println(c.getSize());