
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、使用beanutils時(shí),date類型值為空的解決方法mons.beanuti.conversionexception: no value specifi for date 現(xiàn)在系統(tǒng)里原先不出錯(cuò)的地方老是浮現(xiàn)以上這個(gè)錯(cuò)誤,不知道什么緣由。也都是beanutils.copyproperties(teainfo, infofo);這種語句出的錯(cuò)。 今日查了一上午,找到了它的使用,本來它是一種反射機(jī)制,用法copyproperties可以復(fù)制bean,不必重復(fù)寫無數(shù)屬性,只是效率不高。 1, beanutils.copyproperties(dest, orig); 這種copy是淺拷貝,復(fù)制后的2
2、個(gè)bean的同一個(gè)屬性可能擁有同一個(gè)對(duì)象的ref,這個(gè)在用法時(shí)要當(dāng)心,特殊是對(duì)于屬性為自定義類的狀況.還要屬性為集合類的狀況。當(dāng)心hibernate的set 2,beanutils.copyproperties與propertyutils.copyproperties的區(qū)分 這兩個(gè)類幾乎有一摸一樣的功能,唯一的區(qū)分是:beanutils在對(duì)bean賦值是會(huì)舉行類型轉(zhuǎn)化。舉例來說也就是在copyproperty時(shí)只要屬性名相同,就算類型不同,beanutils也可以舉行copy;而propertybean則可能會(huì)報(bào)錯(cuò)。固然2個(gè)bean之間的同名屬性的類型必需是可以轉(zhuǎn)化的,否則用beanutils
3、一樣會(huì)報(bào)錯(cuò)。 若實(shí)現(xiàn)了mons.beanutils.converter接口則可以自定義類型之間的轉(zhuǎn)化。 除beanutils外還有一個(gè)名為propertyutils的工具類,它也提供copyproperties()辦法,作用與beanutils的同名辦法非常相像,主要的區(qū)分在于后者提供類型轉(zhuǎn)換功能,即發(fā)覺兩個(gè)javabean的同名屬性為不同類型時(shí),在支持的數(shù)據(jù)類型范圍內(nèi)舉行轉(zhuǎn)換,而前者不支持這個(gè)功能,但是速度會(huì)更快一些 http:/xiaozhao- 注重:有人說beanutils支持的轉(zhuǎn)換類型不包括java.util.date? 我用1.6.1版本試了beanutils.copyproper
4、ties,絕對(duì)是支持java.util.date的。 3,lazydynabean可以實(shí)現(xiàn)動(dòng)態(tài)的vo。 這樣,有時(shí)候程序給view層的東西就可以用它來封裝而不用特地建一個(gè)多余的vo類了。 beanutils.copyproperties與propertyutils.copyproperties使用及區(qū)分 一、簡介: beanutils提供對(duì)java反射和自省api的包裝。其主要目的是利用反射機(jī)制對(duì)javabean的屬性舉行處理。我們知道,一個(gè)javabean通常包含了大量的屬性,無數(shù)狀況下,對(duì)javabean的處理導(dǎo)致大量get/代碼積累,增強(qiáng)了代碼長度和閱讀代碼的難度。 二、使用: bean
5、utils是這個(gè)包里比較常用的一個(gè)工具類,這里只介紹它的copyproperties()辦法。該辦法定義如下: public ic vo copyproperties(java.lang.object dest,java.lang.object orig) throws java.lang.illegalaccessexception, java.lang.reflect.invoiontargetexception 假如你有兩個(gè)具有無數(shù)相同屬性的javabean,一個(gè)很頻繁的狀況就是suts里的po對(duì)象(持久對(duì)象)和對(duì)應(yīng)的actionform,例如 teacher和teacherform。我
6、們普通會(huì)在action里從actionform構(gòu)造一個(gè)po對(duì)象,傳統(tǒng)的方式是用法類似下面的語句對(duì)屬性逐個(gè)賦值: /得到teacherform teacherform teacherform=(teacherform)form; /構(gòu)造teacher對(duì)象 teacher teacher=new teacher(); teacher.setname(teacherform.getname(); teacher.setage(teacherform.getage(); teacher.setgender(teacherform.getgender(); teacher.setmajor(teache
7、rform.getmajor(); teacher.setdepartment(teacherform.getdepartment(); /持久化teacher對(duì)象到數(shù)據(jù)庫 hibernatedao.save(teacher); 而用法beanutils后,代碼就大大改觀了,如下所示: /得到teacherform teacherform teacherform=(teacherform)form; /構(gòu)造teacher對(duì)象 teacher teacher=new teacher(); beanutils.copyproperties(teacher,teacherform); /持久化tea
8、cher對(duì)象到數(shù)據(jù)庫 hibernatedao.save(teacher); 假如teacher和teacherform間存在名稱不相同的屬性,則beanutils不對(duì)這些屬性舉行處理,需要程序員手動(dòng)處理。例如 teacher包含modifydate(該屬性記錄最后修改日期,不需要用戶在界面中輸入)屬性而teacherform無此屬性,那么在上面代碼的 copyproperties()后還要加上一句: teacher.setmodifydate(new date(); 怎么樣,很便利吧!除beanutils外還有一個(gè)名為propertyutils的工具類,它也提供copyproperties(
9、)辦法,作用與 beanutils的同名辦法非常相像,主要的區(qū)分在于后者提供類型轉(zhuǎn)換功能,即發(fā)覺兩個(gè)javabean的同名屬性為不同類型時(shí),在支持的數(shù)據(jù)類型范圍內(nèi)舉行轉(zhuǎn)換,而前者不支持這個(gè)功能,但是速度會(huì)更快一些。beanutils支持的轉(zhuǎn)換類型如下: * java.lang.bigdecimal * java.lang.biginteger * boolean and java.lang.boolean * byte and java.lang.byte * char and java.lang.character * java.lang.class * double and java.la
10、ng.double * float and java.lang.float * int and java.lang.integer * long and java.lang.long * short and java.lang.short * java.lang.string * java.sql.date * java.sql.time * java.sql.timestamp 這里要注重一點(diǎn),java.util.date是不被支持的,而它的子類java.sql.date是被支持的。因此假如對(duì)象包含時(shí)光類型的屬性,且希翼被轉(zhuǎn)換的時(shí)候,一定要用法java.sql.date類型。否則在轉(zhuǎn)換時(shí)會(huì)提
11、醒a(bǔ)rgument mistype異樣。 三、優(yōu)缺點(diǎn): apache jakarta commons項(xiàng)目十分實(shí)用。我曾在許多不同的項(xiàng)目上或挺直或間接地用法各種流行的commons組件。其中的一個(gè)強(qiáng)大的組件就是beanutils。我 將解釋如何用法beanutils將local實(shí)體bean轉(zhuǎn)換為對(duì)應(yīng)的value 對(duì)象: beanutils.copyproperties(avalue, alocal) 上面的代碼從alocal對(duì)象復(fù)制屬性到avalue對(duì)象。它相當(dāng)容易!它不管local(或?qū)?yīng)的value)對(duì)象有多少個(gè)屬性,只管舉行復(fù)制。我們假設(shè) local對(duì)象有100個(gè)屬性。上面的代碼使我們可以無需鍵入起碼100行的冗長、簡單出錯(cuò)和反復(fù)的get和set辦法調(diào)用。這太棒了!太強(qiáng)大了!太實(shí)用 了! 現(xiàn)在,還有一個(gè)壞消息:用法beanutils的成本驚人地昂貴!我做了一個(gè)容易的測試,beanutils所花費(fèi)的時(shí)光要超過取數(shù) 據(jù)、將其復(fù)制到對(duì)應(yīng)的 value對(duì)象(通過手動(dòng)調(diào)用get和set辦法),以及通過串行化將其返回到遠(yuǎn)程的客戶機(jī)的時(shí)光總和。所以要當(dāng)心用法這種威
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 深夜食堂二零二五特殊時(shí)段補(bǔ)貼用工合同
- 五年級(jí)上冊(cè)音樂教案
- 運(yùn)維方案-模板
- 鄉(xiāng)鎮(zhèn)購房合同樣本
- 新教材數(shù)學(xué)人教B版必修第二冊(cè)教學(xué)案:6.1.2-向量的加法
- 2025年工程項(xiàng)目招投標(biāo)合同(全新版銀行擔(dān)保書)
- 專業(yè)分包工程合同標(biāo)準(zhǔn)文本
- 設(shè)計(jì)類保密協(xié)議模板
- 淘寶店鋪運(yùn)營教學(xué)設(shè)計(jì)
- 優(yōu)惠率建設(shè)工程合同樣本
- 餐飲店菜品成本計(jì)算表
- 《水土保持監(jiān)測技術(shù)規(guī)范SLT 277-2024》知識(shí)培訓(xùn)
- 2025年江蘇南京事業(yè)單位招聘(787人)高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 檔案管理制度培訓(xùn)宣貫
- GB/T 33136-2024信息技術(shù)服務(wù)數(shù)據(jù)中心服務(wù)能力成熟度模型
- 《保護(hù)地球愛護(hù)家園》課件
- 霧化吸入療法合理用藥專家共識(shí)(2024版)解讀
- 2024年度產(chǎn)學(xué)研合作與科研獎(jiǎng)勵(lì)協(xié)議3篇
- 電力工程線路交叉跨越施工主要工序及特殊工序施工方法
- 【MOOC】軟件度量及應(yīng)用-中南大學(xué) 中國大學(xué)慕課MOOC答案
- 24秋國家開放大學(xué)《兒童發(fā)展問題的咨詢與輔導(dǎo)》周測驗(yàn)參考答案
評(píng)論
0/150
提交評(píng)論