最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java工具類BeanUtils庫介紹及實例詳解

 更新時間:2020年02月20日 14:09:38   作者:朱君鵬  
這篇文章主要介紹了Java工具類BeanUtils庫介紹及實例詳解,需要的朋友可以參考下

BeanUtils工具由Apache軟件基金組織編寫,提供給我們使用,主要解決的問題是:把對象的屬性數(shù)據(jù)封裝到對象中。

在整個J2EE的編程過程中,我們經(jīng)常會從各種配置文件中讀取相應的數(shù)據(jù),需要明白的一點是從配置文件中讀取到的數(shù)據(jù)都是String,但是很顯然我們的應用程序中不僅僅有String一種數(shù)據(jù)類型,比如:基本數(shù)據(jù)類型(int、double、char、float等),還有自定義數(shù)據(jù)類型(引用數(shù)據(jù)類型),

那么我們必須面臨的一個問題就是講字符串類型轉(zhuǎn)換為各種具體的數(shù)據(jù)類型,該怎么辦呢?

有兩種方法供我們是使用:

  • 首先判斷需要的數(shù)據(jù)類型,然后對字符串類型調(diào)用相應的方法,將其轉(zhuǎn)換為我們想要的類型
  • 使用BeanUtils工具

對于上面提到的兩種方法,我們分析第一種存在的問題是太過于繁瑣,每次都要進行大量的類型轉(zhuǎn)換,Apache軟件基金會給我們提供了第二種方法,使用其提供的BeanUtils工具,具體的說只需要知道其中的兩個方法就能實現(xiàn)類型的轉(zhuǎn)換,很簡單,降低了編程的難度。

導入包

很明顯,要想使用別人開發(fā)的工具必須將其jar包導入到程序中,但是BeanUtils包存對另外一個軟件包的依賴,下面將具體的顯示jar包的名字,其中的版本號不一定與我使用的相同。

commons-beanutils-1.9.2.jar

commons-logging.jar

請下載最新的版本,并把相應的jar包導入到程序中,具體導入jar包的方法在這里就不做任何的介紹了,這屬于最基本的知識,只要你在從事Java EE的項目開發(fā),幾乎每天都會遇到各種不同的jar包的導入。

在開始編寫具體的代碼之前,請將source導入到程序中,否則將不能生成正確的重載函數(shù),只需要使用吧Attach Source,將jar包(使用外部文件的方式導入,不要使用外部文件夾的方式導入)導入即可。

使用

Beanutils工具在使用時幾乎只用到以下幾個方法,其中一個方法通常情況下都是使用匿名內(nèi)部類。

  • BeanUtils.setProperty(bean, name, value);其中bean是指你將要設置的對象,name指的是將要設置的屬性(寫成”屬性名”),value(從配置文件中讀取到到的字符串值)
  • BeanUtils。copyProperties(bean, name, value),和上面的方法是完全一樣的。使用哪個都可以
  • ConvertUtils.register(Converter converter , ..),當需要將String數(shù)據(jù)轉(zhuǎn)換成引用數(shù)據(jù)類型(自定義數(shù)據(jù)類型時),需要使用此方法實現(xiàn)轉(zhuǎn)換。
  • BeanUtils.populate(bean,Map),其中Map中的key必須與目標對象中的屬性名相同,否則不能實現(xiàn)拷貝。
  • BeanUtils.copyProperties(newObject,oldObject),實現(xiàn)對象的拷貝

自定義數(shù)據(jù)類型使用BeanUtils工具時必須具備的條件

自定義數(shù)據(jù)類型使用BeanUtils工具時,本身必須具備getter和setter方法,因為BeanUtils工具本身也是一種內(nèi)省的實現(xiàn)方法,所以也是借助于底層的getter和setter方法進行轉(zhuǎn)換的。

實例

想要封裝成javabean的對象

package com.jpzhutech.beanutils;

import java.util.Date;

import javax.xml.crypto.Data;

public class Emp {
  private int id ;
  private String name;
  public Emp(int id, String name, double salary, Date date) {
    super();
    this.id = id;
    this.name = name;
    this.salary = salary;
    this.date = date;
  }

  private double salary;
  private Date date;


  public Date getDate() {
    return date;
  }
  public void setDate(Date date) {
    this.date = date;
  }
  public Emp() {

  }

  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public double getSalary() {
    return salary;
  }
  public void setSalary(double salary) {
    this.salary = salary;
  }


  @Override
  public String toString() {
    // TODO Auto-generated method stub
    return "編號:"+this.id+" 姓名:"+this.name+" 工資:"+this.salary+" 生日:"+date;
  }

}

使用BeanUtils組件進行轉(zhuǎn)換

/**
 * BeanUtils工具的使用
 * 功能:BeanUtils主要是用于將對象的屬性封裝到對象中
 * BeanUtils的好處:
 * BeanUtils設置屬性值的時候,如果屬性是基本數(shù)據(jù)類型,那么BeanUtils會自動幫我們進行數(shù)據(jù)類型的轉(zhuǎn)換,并且
 * BeanUtils設置屬性的時候也是依賴于底層的getter和setter方法
 * 
 * 如果設置的屬性值是其他的引用數(shù)據(jù)類型,此時必須要注冊一個類型轉(zhuǎn)換器才能實現(xiàn)自動的轉(zhuǎn)換
 * */

package com.jpzhutech.beanutils;

import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.xml.crypto.Data;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;

public class TestBeanUtils {
  public static void main(String[] args) throws IllegalAccessException, InvocationTargetException {
    //從文件中讀取到的數(shù)據(jù)都是字符串的數(shù)據(jù),或者是表單提交的數(shù)據(jù)獲取到的時候也是字符串數(shù)據(jù)
    //在J2EE的編程中,我們會通過配置文件或者直接從文件獲取數(shù)據(jù)的方式得到我們想要的數(shù)據(jù)
    //那么就存在一個問題,當我們需要的是一個int時,讀到的數(shù)據(jù)確是String,那么我們每次是不是都要先判斷實際
    //需要的是什么數(shù)據(jù)類型,然后進行一個強制的類型轉(zhuǎn)換呢?回答是不需要,我們借助Apache軟件基金會提供的BeanUtils工具
    //根本不用管什么樣的數(shù)據(jù)類型,只需要使用BeanUtils的setProperties方法,該方法有三個參數(shù),對三個參數(shù)進行設置便會
    //實現(xiàn)自動的數(shù)據(jù)類型轉(zhuǎn)換

    /*ConvertUtils.register(new Converter() {


      //自定義日期類型轉(zhuǎn)換器
      @Override
      public Object convert(Class type, Object value) { //type:目前需要轉(zhuǎn)換的數(shù)據(jù)類型 value:目前參數(shù)的值
        //目標:將字符串轉(zhuǎn)換為日期

        if(type != Date.class) return null;

        if (value == null || "".equals(value.toString().trim())) {
          return null;
        }
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
        Date date = null;
        try {
           date = dateFormat.parse((String)value);
        } catch (ParseException e) {
          throw new RuntimeException(e);
        }
        return date;
      }
    }, Date.class); //Date.class表示要轉(zhuǎn)換的成引用類型,Date類型不是基本數(shù)據(jù)類型,所以需要一個轉(zhuǎn)換器進行相應的轉(zhuǎn)換,同樣該功能屬于BeanUtils
    */

    //使用日起轉(zhuǎn)換器工具類
    ConvertUtils.register(new DateLocaleConverter(), Date.class);  //不靈活,自己實現(xiàn)最好

    String id ="110"; //我們用這個三個String類型的屬性代表從配置文件中讀取到的數(shù)據(jù),實際編程過程中這些數(shù)據(jù)直接從properties文件中讀取
    String name = "朱君鵬";
    String salary = "1000";
//    String birthday = "2015年01月30日"; //如果要使用工具中提供的轉(zhuǎn)換器必須要符合一定的格式,像這種格式就不能實現(xiàn)轉(zhuǎn)換
    String birthday = "2015-01-30"; //該格式可以實現(xiàn)使用工具提供的轉(zhuǎn)換器類將字符串正確的轉(zhuǎn)換,


    Emp p = new Emp(); //讀取到數(shù)據(jù)之后,對該對象的屬性進行設置,使用BeanUtils工具可以避免強制類型的轉(zhuǎn)換,但是在Emp類中的每個屬性都要有getter和setter方法
               //因為BeanUtils工具實際上是對內(nèi)省的封裝,使其更加的好用,所以其底層還是依賴getter和setter方法

    BeanUtils.setProperty(p, "id", id); //其中p代表的是要設置的對象

    BeanUtils.setProperty(p, "name", name);  //中間一個參數(shù)代表的是要設置的屬性

    BeanUtils.setProperty(p, "salary", salary); //第三個參數(shù)代表的是第二個屬性的值

    BeanUtils.setProperty(p, "date", birthday);

    System.out.println(p);
  }
}

更多關于Java類庫BeanUtils使用方法及實例請查看下面的相關鏈接

相關文章

  • 詳解Java中Callable和Future的區(qū)別

    詳解Java中Callable和Future的區(qū)別

    這篇文章主要介紹了Java中Callable和Future的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-11-11
  • Java虛擬機處理異常的最佳方式

    Java虛擬機處理異常的最佳方式

    這篇文章主要給大家介紹了關于Java虛擬機處理異常的最佳方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03
  • Java的MyBatis框架中MyBatis Generator代碼生成器的用法

    Java的MyBatis框架中MyBatis Generator代碼生成器的用法

    這篇文章主要介紹了Java的MyBatis框架中Mybatis Generator代碼生成器的用法,Mybatis Generator主要被用來生成繁瑣的配置文件來提高效率,需要的朋友可以參考下
    2016-04-04
  • 如何在Java中創(chuàng)建線程通信的四種方式你知道嗎

    如何在Java中創(chuàng)建線程通信的四種方式你知道嗎

    開發(fā)中不免會遇到需要所有子線程執(zhí)行完畢通知主線程處理某些邏輯的場景?;蛘呤蔷€程 A 在執(zhí)行到某個條件通知線程 B 執(zhí)行某個操作。下面我們來一起學習如何解決吧
    2021-09-09
  • 淺析Spring4新特性概述

    淺析Spring4新特性概述

    Spring 4.1并沒有特別吸引眼球的地方,主要還是增強和一些依賴的版本升級。本文重點給大家介紹Spring4新特性概述,感興趣的朋友一起看看吧
    2017-09-09
  • @PathParam和@QueryParam區(qū)別簡析

    @PathParam和@QueryParam區(qū)別簡析

    這篇文章主要介紹了@PathParam和@QueryParam區(qū)別,分享了相關實例代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Java實戰(zhàn)之用hutool-db實現(xiàn)多數(shù)據(jù)源配置

    Java實戰(zhàn)之用hutool-db實現(xiàn)多數(shù)據(jù)源配置

    在微服務搭建中經(jīng)常會使用到多數(shù)據(jù)庫情形這個時候,下面這篇文章主要給大家介紹了關于Java實戰(zhàn)之用hutool-db實現(xiàn)多數(shù)據(jù)源配置的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • screw?Maven插件方式運行時在編譯打包時跳過執(zhí)行的問題解決方法

    screw?Maven插件方式運行時在編譯打包時跳過執(zhí)行的問題解決方法

    這篇文章主要介紹了screw?Maven插件方式運行時在編譯打包時跳過執(zhí)行的問題解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • SpringCloud使用FFmpeg對視頻壓縮處理的代碼示例

    SpringCloud使用FFmpeg對視頻壓縮處理的代碼示例

    在現(xiàn)代的視頻處理系統(tǒng)中,壓縮視頻以減小存儲空間、加快傳輸速度是一項非常重要的任務,FFmpeg作為一個強大的開源工具,廣泛應用于音視頻的處理,包括視頻的壓縮和格式轉(zhuǎn)換等,本文將通過Java代碼示例,向您展示如何使用FFmpeg進行視頻壓縮,并介紹相關參數(shù)的設置
    2024-11-11
  • 詳解Spring Cloud Zuul網(wǎng)關修改為短連接方法

    詳解Spring Cloud Zuul網(wǎng)關修改為短連接方法

    本文主要介紹了詳解Spring Cloud Zuul網(wǎng)關修改為短連接方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04

最新評論

隆化县| 来安县| 诸城市| 临泽县| 岐山县| 宿州市| 通州市| 南通市| 抚松县| 大港区| 舒兰市| 临猗县| 康乐县| 焦作市| 浦江县| 永和县| 彩票| 拜城县| 荥经县| 乐安县| 邯郸市| 札达县| 钟山县| 巴彦县| 得荣县| 北安市| 眉山市| 榆社县| 华容县| 利辛县| 南部县| 玛沁县| 清苑县| 阿城市| 莱阳市| 海口市| 张北县| 大丰市| 海安县| 凤台县| 全南县|