使用beanUtils操纵javabean

package com.lan.beanutils;  
  
import java.lang.reflect.InvocationTargetException;  
import java.text.ParseException;  
import java.text.SimpleDateFormat;  
import java.util.Date;  
  
  
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.junit.Test;  
  
import sun.java2d.pipe.SpanShapeRenderer.Simple;  
  
//使用beanUtils操作bean的属性  
public class Demo {  
  
    @Test  
    public void test1() throws IllegalAccessException, InvocationTargetException{  
          
        Person person = new Person();  
          
        BeanUtils.setProperty(person, "name", "xxxx");  
          
        System.out.println(person.getName());  
    }  
      
    @Test  
    public void test2() throws IllegalAccessException, InvocationTargetException{  
          
        String nameString = "aaa";  
        String passwordString = "123";  
        String age = "33";  
        String birthdayString = "1988-01-01";  
          
        Person person = new Person();  
        BeanUtils.setProperty(person, "name", nameString);  
        BeanUtils.setProperty(person, "password", passwordString);  
        BeanUtils.setProperty(person, "age", age);//只支持8种基本数据类型自动转换  
        //BeanUtils.setProperty(person, "birthday", birthdayString);  
          
        System.out.println(person.getName());  
        System.out.println(person.getPassword());  
        System.out.println(person.getAge());  
        //System.out.println(person.getBirthday());  
          
          
        //为了让日期赋到bean的birthday属性上,我们给beanUtils注册一个日期转换器  
        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 df= new SimpleDateFormat("yyyy-MM-dd");  
                try {  
                    return df.parse(str);  
                } catch (ParseException e) {  
                    throw new RuntimeException(e);//异常链不能断  
                }  
            }  
        }, Date.class);  
          
          
        BeanUtils.setProperty(person, "birthday", birthdayString);  
        System.out.println(person.getBirthday());  
  
                Date date = person.getBirthday();  
        System.out.println(date.toLocaleString());  
    }  
}  
package com.lan.beanutils;  
  
  
import java.util.Date;  
  
  
  
//javabean  
public class Person {  
      
    private String name;  
    private String password;  
    private int age;  
    private Date birthday;  
      
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public String getPassword() {  
        return password;  
    }  
    public void setPassword(String password) {  
        this.password = password;  
    }  
    public int getAge() {  
        return age;  
    }  
    public void setAge(int age) {  
        this.age = age;  
    }  
    public Date getBirthday() {  
        return birthday;  
    }  
    public void setBirthday(Date birthday) {  
        this.birthday = birthday;  
    }  
      
}  

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PhpZendo

JavaScript ES6 (五) – 集合

本章我们将学习 ES6 中的 Set(集合) 及 WeakSet 集合 的相关用法及使用场景。

22810
来自专栏积累沉淀

Java设计模式(十六)----迭代子模式

迭代子模式 一、 概述 二、 结构 1.白箱聚集与外禀迭代子 2.黑箱聚集与内禀迭代子 主动...

226100
来自专栏封碎

BitSet位图算法 博客分类: 算法 算法IDEA

位图算法,使用bit存储数据并排序,优点是快速、占用资源少,缺点是只能对整数使用。     Java和C++中都有已经实现的的BitSet类,可以直接使用...

62440
来自专栏Golang语言社区

Golang语言--布尔型和数值类型

布尔类型 布尔类型是 bool。Go语言提供了内置的布尔值true和flase。Go语言支持标准的逻辑和比较操作。这些操作的结果都是布尔值。 布尔值和表达式可以...

39680
来自专栏码代码的陈同学

Java基础之你会在foreach遍历集合时进行remove操作吗?

当通过for循环遍历集合时,一般禁止操作(add or remove)集合元素。虽然开发规范里写的非常清楚,但最近还是有人掉坑里导致出了一个小BUG,那我们就一...

18160
来自专栏java一日一条

Java HashMap的工作原理

面试的时候经常会遇见诸如:“java中的HashMap是怎么工作的”,“HashMap的get和put内部的工作原理”这样的问题。本文将用一个简单的例子来解释下...

8310
来自专栏阿杜的世界

Java泛型基础(二)泛型接口泛型方法# 总结

泛型可以应用于同一个类,该类可以针对多种类型使用,例如构建一个RedisTemplateService组件,用于处理当前应用中所有对象的缓存操作。这篇文章主要介...

1.3K30
来自专栏无题

Java容器各实现类的底层实现原理概述

Java容器各实现类的底层实现原理概述 ArrayList实现原理要点概括 参考文献:http://zhangshixi.iteye.com/blog/67...

47560
来自专栏Python爬虫实战

LeetCode刷题:Array系列之Remove Element

#include <iostream> #include <vector> using namespace std;

8310
来自专栏Java帮帮-微信公众号-技术文章全总结

【Java提高二十】集合指定初始容量&asList缺陷&subList缺陷

【Java提高二十】集合指定初始容量 &asList缺陷&subList缺陷 集合指定初始容量 集合是我们在Java编程中使用非常广泛的,它就像大海,海纳百川,...

39970

扫码关注云+社区

领取腾讯云代金券