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

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

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

    我是FE,也是Fe

    前端來源于不斷的點滴積累。我一直在努力。

    統(tǒng)計

    留言簿(15)

    閱讀排行榜

    評論排行榜

    架構(gòu)之路(3)-永恒的話題-CRUD

    前面說過所謂的業(yè)務(wù)大多數(shù)是crud。那從這個入手,我發(fā)現(xiàn)要把這個配置出來,配置的結(jié)果不言而喻,能生成crud的頁面。我們其實只需要一些元數(shù)據(jù)(meta information)。元數(shù)據(jù)就相當(dāng)于我們平常用的hibernate 里面的cfg.xml之類的東西。用來描述實體/字段的一些信息。從業(yè)務(wù)的需要來講,單憑這個xml的配置還不能生成crud的頁面。還需要很多的信息。下面是這些字段信息的整理。

    TABLENAME

    表名
    TCOLUMNSNAME 表字段名
    TCOLUMNSTYPE 表字段類型
    ECOLUMNSNAME 實體字段名
    ECOLUMNSTYPE 實體字段java類型
    COLUMNSLENGTH 字段長度
    COLUMNSNULLABLE 是否允許為空
    ISPRIMARYKEY 是否主鍵
    STATE 啟用狀態(tài)
    DESCRIPTION 描述
    COLUMNID 字段序號
    LABELTEXT 字段label名稱
    DEFAULTVALUE 字段默認(rèn)值
    CANSEARCH 是否為查詢字段
    SEARCHINPUTTYPE 查詢呈現(xiàn)方式,文本框/下拉框/..
    SEARCHOPERATOR 默認(rèn)查詢運算符,等于/大于/..
    FORMAT 字段顯示格式,日期格式/小數(shù)格式/貨幣格式
    CSSCLASS 呈現(xiàn)css class
    READONLY 編輯時是否只讀
    EDITINPUTTYPE 編輯呈現(xiàn)方式 文本框/下拉框/..
    CREATESHOW 新增時是否顯示
    UPDATESHOW 更新時是否顯示
    VIEWSHOW 查看時是否顯示
    BLANKMSG 值為空警告
    VALIDATETYPE 校驗類型,小數(shù)/整數(shù)/正整數(shù)/..
    INVALIDMSG 校驗不通過警告
    MAPPING 數(shù)據(jù)字典,其實就是配置下拉框的通用的數(shù)據(jù)源。比如通常{1:是,0:否}。
    MAXVALUE 最大值
    MINVALUE 最小值
    VALIDATEOP 校驗比較類型
    VALIDATETO 校驗比較對象表達(dá)式
    VALIDATEREGEXP 校驗正則表達(dá)式
    VALIDATEIF 校驗禁用條件
    CTABLE 約束表,這4個屬性生成下拉框數(shù)據(jù)源。
    CCOEDECOLUMN 約束值字段
    CVALUECOLUMN 約束文本字段
    CCONDITION 約束文本字段

    我估計很多人看了這些屬性后笑了,的確,很多人這么做過。后來發(fā)現(xiàn)這樣做很不靈活,無法滿足需要,其實這個問題很簡單,為什么不應(yīng)用一種表達(dá)式,ognl,el之類的表達(dá)式放在配置項里,這些屬性就靈活很多。siebel這樣的產(chǎn)品,不也有一些地方需要些一個腳本,比如escript之類的東西么。想想我們天天琢磨的業(yè)務(wù),不就是這些東西么。把它配置到數(shù)據(jù)庫里面,接下來就是怎么生成頁面的么。我看到的目前大多數(shù)的做法是做一個代碼生成器,我認(rèn)為這種做法很不好,代碼生成器本身是解決了很多機械活,但是關(guān)鍵還是你生成的代碼本身的質(zhì)量。沒錯,你可以用代碼生成器去免去上萬行代碼要手寫的尷尬,我不僅要問,為什么會弄成上萬行的代碼?有的人還喜歡吹噓我寫過上萬行的Java代碼,我更是嗤之以鼻,這不是你的驕傲,這恰是你的悲哀。上萬行的代碼,我見過的有兩種可能性,一個是java/jsp代碼沒有重構(gòu),沒有封裝。二是數(shù)據(jù)庫的設(shè)計有問題,一個表200個字段,頁面能不復(fù)雜么。第一種是架構(gòu)師要解決的問題,第二種那據(jù)是設(shè)計時要注意的事情了。扯遠(yuǎn)了。界面是怎么出來的。至少不是用代碼生成器跑出來的。接觸過ruby on rails 或者grails的朋友肯定知道里面的activerecord/scanffold組合快速實現(xiàn)crud。不過他說白了也是在生成頁面+改代碼,我還是不喜歡。因為界面確實是太靈活。我的思路分兩個個方面入手:1.封裝字段,根據(jù)上述字段屬性封裝成jsp的tag。這個tag通過字段名讀取元數(shù)據(jù)屬性,生成瀏覽器執(zhí)行的html,javascript。2:所謂頁面不久是指定這個頁面有哪幾個字段不就得了。查詢頁面,那幾個字段是查詢條件,讀取字段的查詢屬性。編輯頁面,無非是指定編輯哪些字段就行,在這個基礎(chǔ)上做一個小工具,頁面就很容易出來。當(dāng)然,好的框架還要解決一個問題,就是變更。怎樣能以最少的代價做變更。這個我是這么想的。比如說,某個表刪除一個字段,我們可以提供一個工具查詢哪些頁面引用了這個字段,然后用程序一并刪除,其實這個實現(xiàn)也不難,因為每個字段無非就是jsp頁面的一個tag么。大不了用個全文搜索。用正則一替換就完了。

    上面是我總結(jié)的快速實現(xiàn)crud的一些想法。這部分其實是很多重復(fù)性勞動的根源,把這些工夫省下來了。開發(fā)效率高很多。

    posted on 2009-12-25 16:52 衡鋒 閱讀(455) 評論(0)  編輯  收藏 所屬分類: 架構(gòu)之路

    主站蜘蛛池模板: 亚洲风情亚Aⅴ在线发布| 亚洲人成在线中文字幕| 美女羞羞视频免费网站| 成人毛片免费视频| 亚洲香蕉在线观看| 最近最新的免费中文字幕| ASS亚洲熟妇毛茸茸PICS| 免费无码不卡视频在线观看| 亚洲国产精华液2020| 日本视频免费在线| 无遮挡国产高潮视频免费观看| 亚洲精品第一国产综合境外资源| 免费看一级高潮毛片| 一本久久a久久精品亚洲| 国产成年无码久久久免费| 久久精品亚洲一区二区三区浴池| 国产成人yy免费视频| 亚洲中文无码mv| 亚洲国产一区二区视频网站| 免费无码又爽又刺激网站| 久久亚洲熟女cc98cm| 天天摸天天操免费播放小视频| 亚洲av成本人无码网站| 亚洲精品无码不卡在线播HE| 91免费国产精品| 色偷偷亚洲男人天堂| 亚洲人成网站在线观看播放| 99免费视频观看| 亚洲av无码专区在线观看亚| 国产偷国产偷亚洲清高动态图| 91福利视频免费| 亚洲av日韩精品久久久久久a | 久久国产乱子伦精品免费午夜| 亚洲综合久久综合激情久久 | 精品久久8x国产免费观看| 亚洲精华液一二三产区| 色噜噜亚洲精品中文字幕| 无码av免费毛片一区二区| 美女裸免费观看网站| 亚洲无线电影官网| 免费一看一级毛片人|