• 使用BeanUtils操作Bean属性


    package com.wzh.test.beanutils;
    
    import java.lang.reflect.InvocationTargetException;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.commons.beanutils.BeanUtils;
    import org.apache.commons.beanutils.ConversionException;
    import org.apache.commons.beanutils.ConvertUtils;
    import org.apache.commons.beanutils.Converter;
    import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
    import org.junit.Test;
    
    //使用BeanUtils操作Bean属性(第三方)
    public class Demo1 {
    
    	@Test
    	public void test1() throws IllegalAccessException,
    			InvocationTargetException {
    		Person p = new Person();
    		BeanUtils.setProperty(p, "name", "victor");
    
    		System.out.println(p.getName());
    	}
    
    	@Test
    	public void test2() throws IllegalAccessException,
    			InvocationTargetException {
    		Person p = new Person();
    		// 自动将String转为int 支持8种基本数据类型
    		BeanUtils.setProperty(p, "age", "23");
    		// 默认不支持时间转换
    		BeanUtils.setProperty(p, "Birthday", "2012-3-1");
    		System.out.println(p.getAge());
    		System.out.println(p.getBirthday());
    	}
    
    	@Test
    	public void test3() throws IllegalAccessException,
    			InvocationTargetException {
    
    		// 为了让日期赋到Bean的Birthday属性上,我们给BeanUtils注册一个日期转换器(敲入代码未起作用,需检查)
    		// 方法1.
    		ConvertUtils.register(new Converter() {
    			@Override
    			public Object convert(Class type, Object value) {
    				if (value == null)
    					return null;
    
    				if (!(value instanceof String)) {
    					System.out.println("不是日期类型");
    					throw new ConversionException("不是日期类型");
    				}
    
    				String str = (String) value;
    				if (str.trim().equals(str)) {
    					return null;
    				}
    
    				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    				try {
    					return df.parse(str);
    				} catch (ParseException e) {
    					throw new RuntimeException(e);// 异常链不能断
    				}
    			}
    		}, Date.class);
    
    		// ConvertUtils.register(new DateLocaleConverter(), Date.class);
    		Person p = new Person();
    		// 自动将String转为int 支持8种基本数据类型
    
    		BeanUtils.setProperty(p, "birthday", "2012-12-12");
    		System.out.println(p.getBirthday());
    	}
    
    	@Test
    	public void test4() throws IllegalAccessException,
    			InvocationTargetException {
    
    		Map map = new HashMap();
    		map.put("name", "aa");
    		map.put("birthday", "2012-1-1");
    
    		ConvertUtils.register(new DateLocaleConverter(), Date.class);
    		Person p = new Person();
    		// 自动将String转为int 支持8种基本数据类型
    
    		BeanUtils.populate(p, map);//用Map集合中的值填充到Bean的属性
    		System.out.println(p.getBirthday());
    	}
    }



    package com.wzh.test.beanutils;
    
    import java.util.Date;
    
    public class Person {
    
    	public Person() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
    	private String name;
    	private String age;
    	private Date birthday;
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getAge() {
    		return age;
    	}
    	public void setAge(String age) {
    		this.age = age;
    	}
    	public Date getBirthday() {
    		return birthday;
    	}
    	public void setBirthday(Date birthday) {
    		this.birthday = birthday;
    	}
    }
    

      

      

  • 相关阅读:
    三级听力
    查找算法集(数组实现、链表实现)(转贴)
    男人一生必须要做10件事(转载)
    经典源码网(集合)
    ubuntu8.04下mplayer错误error:could not open required directshow codec drvc.dll
    asp.net 访问 iis的权限 问题
    OPENROWSET 说明
    vb多线程问题
    收缩数据库日志文件(转贴)
    Update 两个表之间数据更新
  • 原文地址:https://www.cnblogs.com/zhuawang/p/3378582.html
Copyright © 2020-2023  润新知