1. 程式人生 > >學習Apache commons-beanutils工具類

學習Apache commons-beanutils工具類

1、前言

初學java時,使用過beanUtils封裝javaben引數,使用框架之後,由框架自動封裝。慢慢淡忘了這個工具類,今天來學習學習!

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包