<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 176, comments - 240, trackbacks - 0, articles - 7
       CRUD(Create, Read,Update, Delete)操作中最難處理的是查詢。因?yàn)椴樵兛偸嵌鄻踊模绻總€(gè)特定查詢調(diào)用都編制一個(gè)對(duì)象方法,則維護(hù)量太大且擴(kuò)展性很差。如果編制一個(gè)通用的 查詢接口,一般的做法是直接以SQL文本作為參數(shù),但這樣就幾乎喪失了封裝的意義。這里的核心問(wèn)題是Query本身是復(fù)雜的,我們應(yīng)該將它對(duì)象化為一個(gè) 類,在程序中控制Query的結(jié)構(gòu),而一個(gè)文本對(duì)象與一個(gè)復(fù)雜的Java結(jié)構(gòu)對(duì)象的差異就在于對(duì)于文本對(duì)象我們很難有什么假定,因而在程序中也很難編制通 用的程序?qū)ζ溥M(jìn)行處理,一般只能對(duì)它進(jìn)行傳遞。實(shí)際上,文本中描述的結(jié)構(gòu)存在于java程序之外!當(dāng)然,我們可以利用Parser來(lái)重新發(fā)現(xiàn)這種結(jié)構(gòu),那 最容易使用的Parser就是xml parser了,所以我們應(yīng)該將Query的結(jié)構(gòu)建立在xml描述的基礎(chǔ)上。
    edu.thu.search.Query類直接體現(xiàn)了對(duì)主題域的通用查詢條件。(對(duì)比我對(duì)數(shù)據(jù)倉(cāng)庫(kù)模型的描述)
    class Query{
        List getFields();
     TreeNode getCondition();
    }
    查 詢條件主要通過(guò)TreeNode進(jìn)行顯式建模,使得程序有可能對(duì)它進(jìn)行進(jìn)一步的處理。例如,在DataSource處理Query之前,權(quán)限配置模塊可以 將附加約束直接追加到現(xiàn)有查詢條件之后,實(shí)現(xiàn)對(duì)數(shù)據(jù)權(quán)限的行級(jí)控制。因?yàn)榘袴ields明確分離出來(lái),我們也可以做到對(duì)權(quán)限的列級(jí)控制。
    Query類的使用示例如下:
    Query.begin().fields(TEST_FIELDS)
                 .condition().eq(ID,"3")
       .end().resultType(IQueriable.TYPE_ROW_MAP)
       .findOne(dataSource).mapValue();
    這里的調(diào)用接口的設(shè)計(jì)基本遵循與SQL類相同的風(fēng)格,只是面向主題域而不是直接針對(duì)SQL語(yǔ)言的封裝。
    主站蜘蛛池模板: 中文字幕无线码免费人妻| 亚洲三级中文字幕| 精品久久久久久亚洲| 亚洲AV无码成H人在线观看| 日本午夜免费福利视频| 天天天欲色欲色WWW免费| 一二三四影视在线看片免费 | 毛片a级毛片免费播放下载| 亚洲精品在线免费观看| 久久国产精品成人片免费| 日本免费电影一区二区| 在线观看特色大片免费网站| 91福利免费网站在线观看| 韩国免费a级作爱片无码| 成人妇女免费播放久久久| 全黄大全大色全免费大片| 最新国产乱人伦偷精品免费网站 | 中文字幕一区二区免费| 国产一级淫片a免费播放口| 日本免费中文字幕| 97国产在线公开免费观看| 免费能直接在线观看黄的视频| 精品国产污污免费网站aⅴ| 成年在线观看网站免费| 成人性生交大片免费看午夜a| 午夜小视频免费观看| 亚洲欧美黑人猛交群| 老司机福利在线免费观看| 午夜成人无码福利免费视频| 国产精品美女免费视频观看| 国产在线精品免费aaa片| 久久午夜夜伦鲁鲁片免费无码影视| 国产精品色拉拉免费看| 夭天干天天做天天免费看| 国产精品高清全国免费观看| 亚洲XX00视频| 久久亚洲国产伦理| 亚洲综合精品第一页| 免费一级毛片在线播放视频免费观看永久| 草久免费在线观看网站| 日韩电影免费在线观看|