<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ǔ)言的封裝。
    主站蜘蛛池模板: 亚洲国产精品无码久久SM| 亚洲第一二三四区| 99国产精品视频免费观看| 亚洲大尺码专区影院| 在线观看免费大黄网站| a级毛片免费观看在线| 亚洲成人在线网站| 免费理论片51人人看电影| caoporm碰最新免费公开视频| 亚洲视频在线观看不卡| 国产yw855.c免费视频| 日韩免费在线视频| 亚洲GV天堂无码男同在线观看| 亚洲日产无码中文字幕| 成人爽A毛片免费看| 你懂的网址免费国产| 亚洲午夜无码久久久久小说| 亚洲色欲久久久综合网东京热 | 久久免费高清视频| 国产亚洲中文日本不卡二区| 亚洲人成网77777色在线播放| 永久免费av无码不卡在线观看| 久久毛片免费看一区二区三区| 久久亚洲精品专区蓝色区| 亚洲精品成人片在线播放| 夜夜嘿视频免费看| 95老司机免费福利| 国产精品视频全国免费观看 | 日韩免费在线视频| 日韩在线观看免费完整版视频| 亚洲国产综合第一精品小说| 亚洲AV无码乱码在线观看牲色 | 精品国产综合成人亚洲区| 国产高清在线免费| 无人在线观看完整免费版视频 | 亚洲日本va午夜中文字幕久久| 97在线观免费视频观看| 无码国产精品一区二区免费vr| 中国性猛交xxxxx免费看| 全部在线播放免费毛片| 亚洲欧美日韩久久精品|