首页 > 代码库 > 内省—beanutils工具包
内省—beanutils工具包
Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写。
BeanUtils的作用:
1)支持String到8种基本数据类型的转换;
2)其他引用数据类型都需要注册转换器:ConvertUtils.register(Converter,Class);
public class Person { private String name; private String password; private Integer age; private Date birthday; getter/setter}
采用beanutils设置属性
@Testpublic void test1() throws Exception { Person person = new Person(); BeanUtils.setProperty(person, "name", "zhangsan"); System.out.println(person.getName());}
采用beanutils拷贝对象的属性(基本类型)
@Testpublic void test2() throws Exception { String name = "zhangsan"; String password = "123"; String age = "34"; Person person = new Person(); BeanUtils.setProperty(person, "name", name); BeanUtils.setProperty(person, "password", password); BeanUtils.setProperty(person, "age", age);// 自动类型转换,只支持8种基本数据类型 System.out.println(person);}
采用beanutils拷贝对象的属性(非基本类型)
@Testpublic void test3() throws Exception { String name = "zhangsan"; String password = "123"; String age = "34"; String birthday = "1980-09-05"; Person person = new Person(); BeanUtils.setProperty(person, "name", name); BeanUtils.setProperty(person, "password", password); BeanUtils.setProperty(person, "age", age);// 自动类型转换 BeanUtils.setProperty(person, "birthday", birthday); // 类型转换失败 System.out.println(person);}
为让Date能够赋值到birthday属性上,我们给beanutils注册一个日期转换器。
改进代码如下:
@Testpublic void test4() throws Exception { String name = "zhangsan"; String password = "123"; String age = "34"; String birthday = "1980-09-05"; ConvertUtils.register(new Converter() { @Override public Object convert(Class type, Object value) { if (value =http://www.mamicode.com/= null) {"只支持String类型的转换!"); } String str = (String) value; if (null == str || "".equals(str.trim())) { return null; } SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { return format.parse(str); } catch (ParseException e) { throw new ConversionException(e); } } }, Date.class); Person person = new Person(); BeanUtils.setProperty(person, "name", name); BeanUtils.setProperty(person, "password", password); BeanUtils.setProperty(person, "age", age);// 自动类型转换 BeanUtils.setProperty(person, "birthday", birthday); System.out.println(person);}
采用beanutils自带的日期类型转换器
@Testpublic void test5() throws Exception { String name = "zhangsan"; String password = "123"; String age = "34"; String birthday = "1980-09-05"; ConvertUtils.register(new DateLocaleConverter(), Date.class); Person person = new Person(); BeanUtils.setProperty(person, "name", name); BeanUtils.setProperty(person, "password", password); BeanUtils.setProperty(person, "age", age);// 自动类型转换 BeanUtils.setProperty(person, "birthday", birthday); System.out.println(person);}
收集数据到map中,并通过beanutils拷贝到指定的对象中去
@Testpublic void test6() throws Exception { Person person = new Person(); ConvertUtils.register(new DateLocaleConverter(), Date.class); Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "aa"); map.put("password", "123"); map.put("age", 23); map.put("birthday", "1980-09-05"); // 用map集合中的值,填充bean的属性, // 注意:属性名称必须要一致 BeanUtils.populate(person, map); System.out.println(person);}
内省—beanutils工具包
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。