13.BeanUtils组件-基础.md


目录

用途

可以用来对JavaBean的各种增强操作

基本属性的设置

package per.liyue.code.beanutildemo;
import java.util.Date;
public class Person {
    private int id = 0;
    private String name = null;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}  

package per.liyue.code.beanutildemo;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test;
public class BeanUtilsDemo {
    @Test
    public void demo1() throws IllegalAccessException, InvocationTargetException {
        /*
         * 1.对JavaBean的操作
         */
        // 基本的对象属性设置
        Person p = new Person();
        p.setId(1);
        p.setName("张三");
        System.out.println("原始操作:" + p.getName());
        
        //1.BeanUtils两种方式设置属性
        Person pU = new Person();
        BeanUtils.copyProperty(pU, "id", 2);
        BeanUtils.setProperty(pU, "name", "李四");
        System.out.println("使用BeanUtils设置属性:" + pU.getName());
    }

}  

Map数据的拷贝

package per.liyue.code.beanutildemo;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test;
public class BeanUtilsDemo {
    @Test
    public void demo1() throws IllegalAccessException, InvocationTargetException {
       

        //2.将Map中的数据拷贝到对象中
        Map<String, Object>map = new HashMap<>();
        //这里的key要保证和BeanUtils中拷贝的属性名称,类字段名称一致才可以!!
        map.put("name", "王五");
        Person pM = new Person();
        BeanUtils.populate(pM, map);
        System.out.println("使用BeanUtils拷贝Map数据:" + pM.getName());
    }

}  

对象的拷贝

package per.liyue.code.beanutildemo;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test;
public class BeanUtilsDemo {
    @Test
    public void demo1() throws IllegalAccessException, InvocationTargetException {


        
        //.BeanUtils拷贝对象
        Person pC = new Person();
        //没有日期类型时候可以
        BeanUtils.copyProperties(pC, pU);
        System.out.println("使用BeanUtils拷贝对象:" + pC.getName());
    }

}  

转换器

package per.liyue.code.beanutildemo;
import java.util.Date;
public class PersonDate {
    private String name = null;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    //日期类型
    private Date birthday;
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "这个人名字:" + name + " 生日" + getBirthday();
    }
}
package per.liyue.code.beanutildemo;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test;
public class BeanUtilsDemo {
     
    @Test
    public void Demo2() throws IllegalAccessException, InvocationTargetException {
        /*
         * 日期类型转换
         */
        PersonDate pD = new PersonDate();
        String name = "赵二";
        String birthday = "1987-01-01";
        //注册类型转换器
        ConvertUtils.register(new DateLocaleConverter(), Date.class);
        //注册完成后拷贝属性
        /*
         * 注意:1.必须类的属性是public
         *      2.这里对于空字符串是没有处理的,需要自己额外加代码
         */
        if ((birthday == null) || ("".equalsIgnoreCase(birthday))) {
            return;
        }
        BeanUtils.copyProperty(pD, "name", name);
        BeanUtils.setProperty(pD, "birthday", birthday);
        System.out.println(pD);
        
    }
}  

原文地址:https://www.cnblogs.com/bugstar/p/8512685.html