上一節:http://m.tkk7.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.createStatement();
?
???
??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_student1_course1”;
?????? String control2 = “score_student1_course2”;
??????
?????? String value1 = “85”;
?????? String value2 = “86”;
?
?????? LazyValidatorActionForm lazyForm = new LazyValidatorForm();
?????? lazyForm.set(control1, value1);
?????? lazyForm.set(control2,value2);
?
?????? //
如果頁面提交后,你可以這樣獲取
?????? Map map = lazyForm. getMap();
??????
?????? //
然后你就可以對這個
map
進行處理,這要看你的處理邏輯嘍!
?
?
?
?
??????
????????????????????????????????????????????????????????????????????????????
作者:張興龍
posted on 2008-06-17 15:36
zhangxl 閱讀(191)
評論(0) 編輯 收藏 所屬分類:
common