学习Apache commons-beanutils工具类

1、前言

初学java时,使用过beanUtils封装javabean参数,使用框架之后,由框架自动封装。慢慢淡忘了这个工具类,今天来学习学习!

2、导入依赖

 <dependency>
     <groupId>commons-beanutils</groupId>
     <artifactId>commons-beanutils</artifactId>
     <version>1.9.3</version>
 </dependency>

该依赖包含了:

3、小试牛刀

          @Test
	  public void test01() throws Exception {
		Student stu1 = new Student();
		Student stu2 = new Student();
		stu2.setNo("TEST001");
		stu2.setName("Jack Chen");
		
		//复制属性
		System.out.println(stu1);
		System.out.println("------------------------");
		BeanUtils.copyProperties(stu1, stu2);
		System.out.println(stu1);
		
                //设置属性的值
		BeanUtils.copyProperty(stu1, "major", "机械设计");
		System.out.println("------------------------");
		System.out.println(stu1);
		
                //将javaBean转化成Map
		Map<String, String> describe = BeanUtils.describe(stu1);
		System.out.println("------------------------");
		for (Map.Entry<String, String> entry : describe.entrySet()) {
			System.out.println("K:"+entry.getKey()+"--V:"+entry.getValue());
		}
		
                //将Map转化成javaBean
		Map<String , String> map = new HashMap<>();
		map.put("no", "TEST002");
		map.put("name", "Blueth Li");
		map.put("major", "Kong Fu");
		Student stu3 = new Student();
		BeanUtils.populate(stu3, map);
		System.out.println("------------------------");
		System.out.println(stu3);
	}

4、结果

5、后记

该工具类中除了BeanUtis方法之外,还有PropertiesUtils、ConvertUtis等。我比较关心BeanUtils这个方法。

spring框架中也有自带的BeanUtils,使用方法和改工具类类型,注意参数的顺序。

6、注意事项

使用beanUtils复制对象的时候,需要注意的是:该工具类复制的时候,如果值为null,那么复制到目标对象中只会被初始化。

Integer、BigDecimal会被处理成0,Date会报错,Boolean出处理成false等。不过,该工具类也提供了相应的处理办法:

ConvertUtils.register(new DateConverter(null), java.util.Date.class);  
ConvertUtils.register(new BigDecimalConverter(null), java.math.BigDecimal.class);  
ConvertUtils.register(new IntegerConverter(null), java.lang.Integer.class);  
ConvertUtils.register(new BooleanConverter(null), java.lang.Boolean.class); 

注意处理数据就不会被初始化了。具体可以看源码的converters包

7、特别说明

commons-beanutils在1.9.0版本之后(包含1.9.0)已经修复了,Date为空报错,没有值会回写默认值的问题。引用1.9.0之后的版本的朋友可以不用担心默认值的问题了。如果还担心就直接使用Spring自带的BeanUtils就不会有这些问题了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值