//使用beanUtils操作bean的属性(第三方)
public class BeanUtilsDemo {
@Test
public void test1() throws IllegalAccessException, InvocationTargetException
{
Person1 p1=new Person1();
//BeanUtils只能操作 public 修饰的class
BeanUtils.setProperty(p1, "name", "p1name");
System.out.println(p1.getName());
}
@Test
public void test2() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
{
String name="aaaa";
String password="123";
String age="34";
String birthday="1990-11-09";
Person1 p1=new Person1();
//仅支持8种基本数据类型转换!!
BeanUtils.setProperty(p1, "name", name);
BeanUtils.setProperty(p1, "password", password);
BeanUtils.setProperty(p1, "age", age);
System.out.println(p1.getName());
System.out.println(p1.getPassword());
System.out.println(p1.getAge());
//老张代码 birthday 为复合属性,支持属性的级联操作!! BeanUtils还可以操作Map;
//BeanUtils.setProperty(p1, "birthday.time", birthday);
//System.out.println(BeanUtils.getProperty(p1, "birthday"));
//为了让日期附到bean的birthday属性上, 我们给beanUtils注册一个日期转换器
//ConvertUtils.register(converter, clazz);
ConvertUtils.register(new Converter(){ //匿名内部类
@Override
public Object convert(Class type, Object value) {
//使用数据时,先检查后使用!!
if(value==null)
return null;
if(!(value instanceof String))
{
throw new ConversionException("只支持String类型转换");
}
String str=(String) value;
if(str.trim().equals(""))
return null;
//SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try {
//只能是抓取异常,不能抛出比父类更多的异常;
return sdf.parse(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
//若出现异常,封装数据抛给jvm控制台!!异常连不能掉;
throw new RuntimeException(e);
}
}
},Date.class);
//使用自定义date 的转换器!!!
BeanUtils.setProperty(p1, "birthday", birthday);
// Date date=new Date();
// System.out.println(date.toLocaleString());
Date date=p1.getBirthday(); //英文时间格式
String d=date.toLocaleString();//将转换中文格式!!
System.out.println("英文格式:"+date+"中文格式:"+d);
}
@Test
public void test3() throws IllegalAccessException, InvocationTargetException
{
String name="aaaa";
String password="123";
String age="34";
String birthday="1990-12-30";
Person1 p1=new Person1();
//仅支持8种基本数据类型转换!!
BeanUtils.setProperty(p1, "name", name);
BeanUtils.setProperty(p1, "password", password);
BeanUtils.setProperty(p1, "age", age);
//beanUtils自身 实现的转换器!! 当时空字符串时会抛异常!!
//ConvertUtils.register(new DateLocaleConverter(), Date.class);
System.out.println(p1.getName());
System.out.println(p1.getPassword());
System.out.println(p1.getAge());
BeanUtils.setProperty(p1, "birthday", birthday);
// Date date=new Date();
// System.out.println(date.toLocaleString());
Date date=p1.getBirthday(); //英文时间格式
String d=date.toLocaleString();//将转换中文格式!!
System.out.println("英文格式:"+date+"中文格式:"+d);
}
@Test
public void test4() throws IllegalAccessException, InvocationTargetException
{
//客户端以map形式提交数据
Map map=new HashMap();
map.put("name", "aaaa");
map.put("password", "123");
map.put("age", "23");
map.put("birthday", "1990-12-30");
ConvertUtils.register(new DateLocaleConverter(), Date.class);
Person1 p1=new Person1();
//用map集合填充bean的属性!!
BeanUtils.populate(p1, map);
System.out.println(p1.getName());
System.out.println(p1.getPassword());
System.out.println(p1.getAge());
System.out.println(p1.getBirthday());
}
}