posts - 28,  comments - 15,  trackbacks - 0

          上一節: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.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 閱讀(194) 評論(0)  編輯  收藏 所屬分類: common

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          隨筆分類(17)

          隨筆檔案(28)

          文章分類(30)

          文章檔案(30)

          相冊

          收藏夾(2)

          hibernate

          java基礎

          mysql

          xml

          關注

          壓力測試

          算法

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 96756
          • 排名 - 600

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 同心县| 汝南县| 福泉市| 长子县| 镶黄旗| 密山市| 江城| 钦州市| 长春市| 米泉市| 黔东| 黑河市| 连城县| 桃源县| 南平市| 呼玛县| 江北区| 焦作市| 临清市| 山西省| 台东县| 桃江县| 商丘市| 东丽区| 武乡县| 奉节县| 庆元县| 当雄县| 霍邱县| 永仁县| 永新县| 庆城县| 抚远县| 兴仁县| 平山县| 明溪县| 桂林市| 札达县| 平凉市| 和田县| 陇西县|