package com.rlovep.beanutil; import java.lang.reflect.InvocationTargetException; import java.sql.Date; import java.text.ParseException; import java.text.SimpleDateFormat; 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.Converter; import org.apache.commons.beanutils.converters.DateConverter; import org.junit.Test; public class BeanOpr { private String name; @Test /** * * @Title: testHello * @Description: beanutiils拷贝的介绍 * @return:void * @throws * @author peace w_peace@163.com */ public void testHello(){ Admin admin=new Admin(); try { //获得属性方法: System.out.println(BeanUtils.getProperty(admin,"userName")); //拷贝属性 BeanUtils.copyProperty(admin, "usetName", "peace"); //类似于设置属性 BeanUtils.setProperty(admin, "id", 001); //对象的拷贝 Admin admin2=new Admin(); BeanUtils.copyProperties(admin2, admin); //输出两个admin System.out.println(admin); System.out.println(admin2); //map数据,拷贝到对象中 Map<String, Object> map=new HashMap<>(); map.put("userName","peace2"); map.put("age", 22); map.put("id", 002); map.put("pwd", 123456); //通过Map拷贝: BeanUtils.populate(admin,map); System.out.println(admin); } catch (IllegalAccessException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * * @Title: testRegist * @Description: 实现对不支持的类进行转换。 * @return:void * @throws * @author peace w_peace@163.com */ @Test public void testRegist(){ // 注册日期类型转换器:1, 自定义的方式 ConvertUtils.register(new Converter() { /** * 转换函数,实现对date的转换。 */ @Override public Object convert(Class type, Object value) { //判断是否为Date类型 if(type!=Date.class) return null; //判断是否为空 if(value==null||"".equals(value.toString().trim())) return null; try { //转换方式 SimpleDateFormat date=new SimpleDateFormat("yyyy-mm-dd"); return date.parse(value.toString()); } catch (ParseException e) { throw new RuntimeException(e); } } }, Date.class); //执行 Admin admin=new Admin(); Map<String, Object> map=new HashMap<>(); map.put("userName","peace2"); map.put("age", 22); map.put("id", 002); map.put("pwd", 123456); map.put("birth", new Date(2015, 10, 9)); try { BeanUtils.populate(admin,map); System.out.println(admin); } catch (IllegalAccessException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test /** * * @Title: testRigest2 * @Description: 使用提供的date类型转换器 * @return:void * @throws * @author peace w_peace@163.com */ public void testRigest2(){ ConvertUtils.register(new DateConverter(), Date.class); //执行 Admin admin=new Admin(); Map<String, Object> map=new HashMap<>(); map.put("userName","peace2"); map.put("age", 22); map.put("id", 002); map.put("pwd", 123456); map.put("birth", new Date(2015, 10, 9)); try { BeanUtils.populate(admin,map); System.out.println(admin); } catch (IllegalAccessException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }