简介

大多数的java开发者通常在创建Java类的时候都会遵循JavaBean的命名模式,对类的属性生成getters方法和setters方法。通过调用相应的getXxx和setXxx方法,直接访问这些方法是很常见的做法。BeanUtils就是一种方便我们对JavaBean进行操作的工具,是Apache组织下的产品。

前提

  • commons-beanutils-1.9.3.jar
  • commons-logging-1.2.jar(由于commons-beanutils-1.9.3.jar依赖与commons-loggin否则会报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory)

代码清单,测试用的JavaBean:User.java

public class User {

    // 姓名
private String userName; // 年龄
private int age; // 生日
private Date birthday; public User() {
} public User(String userName, int age) {
this.userName = userName;
this.age = age;
} public User(String userName, int age, Date birthday) {
this.userName = userName;
this.age = age;
this.birthday = birthday;
} public int getAge() {
return this.age;
} public String getUserName() {
return this.userName;
} public void setAge(int age) {
this.age = age;
} public void setUserName(String userName) {
this.userName = userName;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} @Override
public String toString() {
return "User [userName=" + userName + ", age=" + age + ", birthday=" + birthday + "]";
} }

测试代码清单

public class BeanUtilsDemo {

    public static void main(String[] args) throws Exception {
User user = new User("Jim", 1, new Date(123456798));
// 获取属性值
System.out.println("userName :" + BeanUtils.getProperty(user, "userName"));
// 设置引用类型属性
BeanUtils.setProperty(user, "userName", "testBeanUtils");
System.out.println("user = " + user);
// 设置对象类型属性方法一
BeanUtils.setProperty(user, "birthday", new Date(987652122564L));
System.out.println("user = " + user);
// 设置对象类型属性方法二
BeanUtils.setProperty(user, "birthday.time", 45641246546L);
System.out.println("user = " + user);
// 设置自定义对象属性方法一
System.out.println("WayOne \n Before:\n" + user);
Hobby hobby = new Hobby("篮球", "每天一小时,健康一辈子");
BeanUtils.setProperty(user, "hobby", hobby);
System.out.println("After:\n" + user);
// 设置自定义对象属性方法二,这里需要注意,如果hobby为null,
// 则这样是设置值是设置不进去的,只有当对象不为空的时候才能设置进去
System.out.println("WayTwo \n Before:\n" + user);
BeanUtils.setProperty(user, "hobby.hobbyName", "乒乓球");
System.out.println("user = " + user);
BeanUtils.setProperty(user, "hobby", null);
BeanUtils.setProperty(user, "hobby.desc", "我国乒乓第一,我爱国");
System.out.println("After:\n" + user); } }

JAVA工具包_BeanUtils的更多相关文章

  1. Neo4j图数据库管理系统开发笔记之一:Neo4j Java 工具包

    1 应用开发概述 基于数据传输效率以及接口自定义等特殊性需求,我们暂时放弃使用Neo4j服务器版本,而是在Neo4j嵌入式版本的基础上进行一些封装性的开发.封装的重点,是解决Neo4j嵌入式版本Emb ...

  2. 如何在jmeter中调用自己写的java工具包

    本文介绍在jmeter中调用自己写java工具包,并非直接继承jmeter提供的java sample request接口. 工具/原料 jmeter eclipse 方法/步骤 通常用jmeter做 ...

  3. [置顶] 提高生产力:开源Java工具包Jodd(Java的”瑞士军刀”)

    官方网站:http://jodd.org/ 下载地址:http://jodd.org/download/index.html Jodd=tools + ioc + mvc + db + aop + t ...

  4. 提高生产力:开源Java工具包Jodd(Java的”瑞士军刀”)

    官方网站:http://jodd.org/ 下载地址:http://jodd.org/download/index.html Jodd=tools + ioc + mvc + db + aop + t ...

  5. GitHub Java项目推荐|功能丰富的 Java 工具包|提高开发效率

    GitHub Java项目推荐|功能丰富的 Java 工具包|提高开发效率 功能丰富的 Java 工具包.它帮助我们实现了常用的工具方法,从而减少代码的体积,提高开发效率.该项目最初是作者工作项目中的 ...

  6. java工具包一:日期处理

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7846812.html 邮箱:moyi@moyib ...

  7. java 工具包

    https://www.cnblogs.com/aligege/p/8521934.html https://gitee.com/loolly/hutool https://blog.csdn.net ...

  8. Java工具包之-Guava

    https://blog.csdn.net/zmx729618/article/details/78540026 https://my.oschina.net/realfighter/blog/349 ...

  9. java开源工具包-Jodd框架

    java开源工具包-Jodd框架 /    2019-07-24 Jodd是一个Java工具包和微型框架,Jodd 工具包含一些实用的工具类和小型框架,增强了 JDK 提供很多强大的功能,可以帮助实现 ...

随机推荐

  1. zepto-touch事件

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. centos7 dns(bind)安装配置

    yum install -y bind bind-chroot bind-utils chroot是通过相关文件封装在一个伪根目录内,已达到安全防护的目的,一旦程序被攻破,将只能访问伪根目录内的内容, ...

  3. Java中的线程Thread方法之---join()

    上一篇我们说到了Thread中的stop方法,这一篇我们再来看一下方法join的使用,那么方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. join方法从字面上的意 ...

  4. 最接近神的人_NOI导刊2010提高(02)

    题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...

  5. ASP.NET Core Web应用在发布时选择是否对视图进行编译

    原文:ASP.NET Core Web应用在发布时选择是否对视图进行编译 在我们发布ASP.NET Core Web应用程序时,选择以文件形式发布,发布方法选择文件系统 默认情况下,会把Views的视 ...

  6. flink widow&window funcion&水印

    在定义了窗口分配器之后,我们需要为每一个窗口明确的指定计算逻辑,这个就是窗口函数要做的事情, 当系统决定一个窗口已经准备好执行之后,这个窗口函数将被用来处理窗口中的每一个元素(可能是 分组的). 谁可 ...

  7. MySQL 11章_索引、触发器

    一. 索引: . 为什么要使用索引: 一本书需要目录能快速定位到寻找的内容,同理,数据表中的数据很多时候也可以为他们创建相应的“目录”,称为索引,当创建索引后查询数据也会更加高效 . Mysql中的索 ...

  8. java 一维数组的输出方式

    1.使用传统的for()循环输出: //定义一个数组 int []array = {1,2,3,4,5}; for(int i=0;i<array.length;i++) { System.ou ...

  9. [JZOJ1900] 【2010集训队出题】矩阵

    题目 题目大意 题目化简一下,就变成: 构造一个\(01\)数列\(A\),使得\(D=\sum A_iA_jB_{i,j}-\sum A_iC_i\)最大. 问这个最大的\(D\)是多少. 正解 其 ...

  10. for循环和字典预习

    print("*" *8)for a in range(1,9): print(a,end="")#1-9的奇数print()for a in range(1, ...