學習Apache commons-beanutils工具類
阿新 • • 發佈:2019-01-11
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等。不過,該工具類也提供了相應的處理辦法:
注意處理資料就不會被初始化了。具體可以看原始碼的converters包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);