BeanUtils的使用

首先导入两个jar包:commons-beanutils-1.8.2.jar和commons-logging-1.1.1.jar

package com.hx.shopping.test;

import java.lang.reflect.InvocationTargetException;
/*
 * 注:必须为util下的Date包
 */
import java.util.Date;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;

import com.hx.shopping.entity.User;
import com.hx.shopping.util.DateConverter;

public class BeanUtilsTest {
    public static void main(String[] args) {
        User user = new User();
        String key = "username";//类中必须有对应的属性名
        String value = "张三";
        try {
            BeanUtils.copyProperty(user, key,value);
            //默认的DateConverter不支持String转换成Date类型

            //DateConverter does not support default String to 'Date' conversion.

            /*
             * 日期的类型是未知的格式1994/9/20
             * 自己写一个日期转换器:
             * 1.创建一个类去实现Converter接口
             * 2.再复写接口的convert函数进行转换
             * 3.在进行日期复制之前需要注册转换器
             */

            ConvertUtils.register(new DateConverter(), Date.class);
            BeanUtils.copyProperty(user, "born", "1994/9/20");
            BeanUtils.copyProperty(user, "age",78);
            System.out.println(user);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }

}

打印结果:User [id=0, username=张三, password=null, nickname=null, age=78, born=Tue Sep 20 00:00:00 CST 1994]

package com.hx.shopping.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.beanutils.Converter;
/**
 * 日期格式转换器
 * @author Administrator
 *
 */
public class DateConverter implements Converter {
    /*
     * 第一个参数是需要转换的类类型,日期类
     * 第二个参数是需要转换的字符串值
     */
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    @Override
    public Object convert(Class cl, Object value) {
        //注:此处的Date导包为java.util.Date;
        if(cl != Date.class){
            return null;
        }
        if(value instanceof String){
            try {
                return sdf.parse((String) value);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

}


展开阅读全文

没有更多推荐了,返回首页