上一節:http://www.aygfsteel.com/zhanglongsr/articles/190616.html
1.1. ResultSetDynaClass
?????? 有些時候,我們會遇到需要一個 JavaBean 來持久化多個數據庫表的情況,像上面提到的報表的例子。假如 Ta? 、 Tb 、 Tc 三個表分別代表 A 、 B 、 C3 個報表,現在假設,如果要減少開發人員的代碼編寫,而且表結構有著一定的相似性,那么我們會如何做?就目前來看,最簡單的莫過于減少表的持久化工作,可以讓一個 JavaBean 來維護多個表的持久化。
?????? 我們可以使用 DynaBean 構建動態的數據庫領域模型,但現在我們面臨的一個問題是我們如何獲得有效的數據庫表的相關字段來構建這個 DynaBean ?
?????? ResultSetDynaClass 封裝了 ResultSet ,它能夠幫助我們從一 ResultSet 中取出對應的一組屬性。
?????? 另外, ResultSetDynaClass 能根據執行的 sql 結果集自動為用戶返回一組 DynaBean ,從而減少用戶創建 DynaBean 的工作量。
??????
示例代碼:
?????? ? Connection conn = ...;
?
???
??Statement stmt = conn.crea
? ??? ??ResultSet rs = stmt.executeQuery
????? ("select account_id, name from customers");
? ??? ??Iterator rows = (new ResultSetDynaClass(rs)).iterator();
? ??? ??while (rows.hasNext()) {
????? DynaBean row = (DynaBean) rows.next();
????? System.out.println("Account number is " +
?? ??????????????????????row.get("account_id") +
???????????????????????? " and name is " + row.get("name"));
? ??? ??}
? ??? ??rs.close();
1.2. LazyValidatorActionForm??
從某種意義上來說, LazyValidatorActionForm 也是一種 DynaBean ,因為 LazyValidatorActionForm 繼承于 LazyValidatorForm , LazyValidatorForm 實現了 DynaBean 接口。但是從開發的層次角度考慮,我還是單獨把它提出來。
?????? 從 API 中可以觀察到, LazyValidatorActionForm 繼承于 LazyValidatorForm ,撇開 LazyValidatorActionForm 的 validate() 方法, LazyValidatorActionForm 并沒有提供其他方法,那么 LazyValidatorActionForm 的動態特性完全是從 LazyValidatorForm 繼承而來。
?????? 我們現在虛擬一個需求環境,假設有一個學生成績錄入頁面,課程構成了頁面的列,學生的各科成績構成了頁面的行,從而我們知道,頁面表達學生成績的文本框應該是動態生成的,當然表達學生成績的文本框的名稱與學生和課程有關,但現在我們忽略這一點,只是單純的從頁面的 Form 的解析考慮。
?????? 頁面控件的解析可用代碼表示如下:
代碼示例:
?????? // 假設通過邏輯處理,得到頁面一個學生的一門課程的成績控件名稱
?????? String control1 = “score_studen
?????? String control2 = “score_studen
??????
?????? String value1 = “
?????? String value2 = “
?????? LazyValidatorActionForm lazyForm = new LazyValidatorForm();
?????? lazyForm.set(control1, value1);
?????? lazyForm.set(control2,value2);
?????? // 如果頁面提交后,你可以這樣獲取
?????? Map map = lazyForm. getMap();
??????
?????? // 然后你就可以對這個 map 進行處理,這要看你的處理邏輯嘍!
??????
????????????????????????????????????????????????????????????????????????????
作者: