[問題] 請問物件陣列這樣映射到pojo有搞頭嗎?

看板java作者 (全新開始)時間10年前 (2014/02/12 19:44), 編輯推噓2(207)
留言9則, 4人參與, 最新討論串1/1
不知道大家會不會像我一樣,常常覺得物件陣例映射到 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

02/12 20:40, , 1F
我比較想知道當初那個物件陣列是哪來的...
02/12 20:40, 1F
hibernate 查詢, 版本是 3.1.3

02/12 22:27, , 2F
Groovy可以解決你這篇文章150%的問題
02/12 22:27, 2F
動態語言跟靜態語言很難比 >.< 這方面是靜態語言不好用的地方 不然我何嚐不想在方法參數用 json 的寫法來傳參數, 多好用

02/12 22:31, , 3F
敢問這 150% 怎麼算出來的 (有請戶愚呂弟? XD)
02/12 22:31, 3F

02/13 00:03, , 4F
其實你要的跟動態型態語言也沒什麼兩樣了...
02/13 00:03, 4F
對啊~ 是沒錯... 但你看這還在用 hibernate 3.1 的專案,看起來像是能換 groovy 的樣子嗎? 各框架或依賴能用更新的版本就偷笑了

02/13 14:02, , 5F
Groovy只是寫法上是動態語言, 執行時還是需要編譯成.class
02/13 14:02, 5F

02/13 14:04, , 6F
可以完全相容於pure Java的部份
02/13 14:04, 6F
是啊~ 我也知道, 但這是政治問題不是相容性問題啊~ 不過還是謝謝您, 至少現在我知道 Groovy 有解決這類問題的優雅方法, 更有動力去學了

02/13 17:46, , 7F
superCSV 用很接近的方式把 CSV 讀進 java bean
02/13 17:46, 7F

02/13 17:56, , 8F
不過是跟 dynaBean 一樣用字串當 key...
02/13 17:56, 8F
※ 編輯: dream1124 來自: 36.228.110.102 (02/13 22:24)

02/15 10:00, , 9F
都寫成這樣了,要不要乾脆弄個 adapter 包 ognl @@
02/15 10:00, 9F
文章代碼(AID): #1I-rwk4e (java)