作者dream1124 (全新開始)
看板java
標題[問題] 請問物件陣列這樣映射到pojo有搞頭嗎?
時間Wed Feb 12 19:44:44 2014
不知道大家會不會像我一樣,常常覺得物件陣例映射到 POJO 上的傳統寫法,
程式碼又臭又長呢?
bean.setAxxxx((String)objs[0]);
bean.setBxxxx((Date)objs[2]);
bean.setCxxxx((Integer)objs[3]);
bean.setDxxxx((String)objs[4]);
...
...
下略
如果沒有 fluent API 的時候,要映射的欄位一多,
這種程式碼寫起來令我覺得又更搞人,同時要對應欄位,又要強迫轉型,
還要設定索引。
在看到主流的幾個單元測試框架使用 AOP 或動態修改 byte code 的方法之後,
我萌生一種想法,想請問有沒有工具用這種方法實現過物件陣列映射到 Pojo上面︰
pojo = beanUtils.pojo(pojo).mapFromObjArray(objs)
.as(new Object[]{
pojo.getBxxx(),
pojo.getAxxx(),
pojo.getCxxx(),
....
}).execute();
就是在 呼叫 pojo 時,動態代理或修改 pojo 的內容,
使工具在呼叫 as 時,透過物件陣列對應欄位並自動轉型。
特點是不用自己一個一個轉型,而且欄位一多時,
還很方便在同一行寫下好幾欄的設定,
也不會像 dynaBean 的解決方式一樣,用欄位名稱字串作 key 設定對應
而無法透過 IDE 的功能自動完成,容易錯誤。
請問大家有嚐試過這種做法,甚至有工具已經開發出來了?
還是有更好的映射方式呢?
謝謝大家~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.167.98.33
1F:推 PsMonkey:我比較想知道當初那個物件陣列是哪來的... 02/12 20:40
hibernate 查詢, 版本是 3.1.3
2F:→ NewSpec:Groovy可以解決你這篇文章150%的問題 02/12 22:27
動態語言跟靜態語言很難比 >.< 這方面是靜態語言不好用的地方
不然我何嚐不想在方法參數用 json 的寫法來傳參數, 多好用
3F:推 PsMonkey:敢問這 150% 怎麼算出來的 (有請戶愚呂弟? XD) 02/12 22:31
4F:→ PsMonkey:其實你要的跟動態型態語言也沒什麼兩樣了... 02/13 00:03
對啊~ 是沒錯...
但你看這還在用 hibernate 3.1 的專案,看起來像是能換 groovy 的樣子嗎?
各框架或依賴能用更新的版本就偷笑了
5F:→ NewSpec:Groovy只是寫法上是動態語言, 執行時還是需要編譯成.class 02/13 14:02
6F:→ NewSpec:可以完全相容於pure Java的部份 02/13 14:04
是啊~ 我也知道, 但這是政治問題不是相容性問題啊~
不過還是謝謝您, 至少現在我知道 Groovy 有解決這類問題的優雅方法,
更有動力去學了
7F:→ lovdkkkk:superCSV 用很接近的方式把 CSV 讀進 java bean 02/13 17:46
8F:→ lovdkkkk:不過是跟 dynaBean 一樣用字串當 key... 02/13 17:56
※ 編輯: dream1124 來自: 36.228.110.102 (02/13 22:24)
9F:→ qrtt1:都寫成這樣了,要不要乾脆弄個 adapter 包 ognl @@ 02/15 10:00