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

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

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

    Java Architect

    導航

    <2006年8月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統計

    常用鏈接

    留言簿(2)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    DAO終結者

    動態組裝SQL是實際應用中的一個常見問題,我發現在很多論壇中的解決方案都不干淨,下面是我在很多項目中使用的方案,簡潔有效.

    基本概念如下:

    1. 使用模板技術,如Velocity,FreeMarker;
    2. 在SQL中不要使用?,使用自己的place holder ,such as #{variableName};

    象下面的SQL語句
    select firstName
    ????? ,lastName
    from users u
    where? u.userId= #{userId}

    #if($companyId)
    ? and u.companyId=#{companyId}
    #end

    處理過程如下:

    1.將所有變量放進一個MAP中;
    2.用VELOCITY進行MERGE,將得到以下的SQL,假定companyId 不為空;
    ? select firstName
    ????? ,lastName
    from users u
    where? u.userId= #{userId}
    ? and u.companyId=#{companyId}
    3.再將上面的SQL進一步處理,根據SQL語句中的placeHolder順序和MAP中的變量,生成一個變量的LIST,同時將變量的placeHolder轉換成?;
    4.將變量LIST的數值依次注入到preparedStatement中;

    ? Tips: 這里還可生成一個完全可執行的 SQL 語句輸出到 LOG , 以便進行除錯;
    5.執行SQL, reflection技術將ResultSet轉換成voList;

    ?

    將上面的過程封裝成一個 Class , 只需將 sqlName,parameterMap,voClass 傳入便可返回一個 voList 或數組 . 此舉將大大減化 DAO 的代碼 , 根據我的經驗 , 代碼最起碼減少 70%, 更為重要的是查詢非常容易維護 , 極大地減少了出錯的概率 ,SQL 語句清晰易懂 , 不再是醜陋的 criteria, 也不再是將一個個的分散的 SQL 片斷 , 我們的程序員將會有更多的時間來寫 SQL, 而不是做其它讓人厭煩的工作 , 排錯也變得異常簡單 , 唯一可能出錯的地方只能在 SQL , 只要將 LOG 輸出的完整可執行 SQL 放在 database client 中執行一下 , 問題在哪兒 , 一目了然 .

    我相信此方法 比起 iBatis, Spring jdbcTemplate,Hibernate Criteria 要容易使用得多 . 其實 Hibernate HQL, 也可以用此方法來動態生成 HQL.
    ?

    posted on 2006-08-13 09:35 zrq 閱讀(255) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 卡1卡2卡3卡4卡5免费视频| 国产免费人成视频在线播放播| 亚洲综合久久久久久中文字幕| 亚洲AV无码久久| 久久久久亚洲精品美女| 亚洲阿v天堂在线| 亚洲AV午夜福利精品一区二区| 亚洲成AV人片在线观看| 亚洲国产老鸭窝一区二区三区| 久久久久亚洲AV片无码| 亚洲AV无码AV男人的天堂| 亚洲日本在线观看| 亚洲男人电影天堂| 亚洲av日韩av无码av| 亚洲午夜精品一区二区麻豆| 亚洲区日韩精品中文字幕| 亚洲AV无码专区在线电影成人| 含羞草国产亚洲精品岁国产精品| 国产亚洲情侣久久精品| 一个人看的在线免费视频| 免费萌白酱国产一区二区三区| 美女视频黄a视频全免费网站色窝| 一级毛片在线观看免费| 国产妇乱子伦视频免费| 成年女人毛片免费视频| 又黄又爽无遮挡免费视频| 亚洲精品无码永久在线观看| 亚洲综合AV在线在线播放| 亚洲精品免费在线观看| 亚洲乱码在线卡一卡二卡新区| 处破女第一次亚洲18分钟| 中文字幕无线码中文字幕免费| 久久国产精品成人片免费| 毛片免费视频在线观看| 亚洲国产香蕉人人爽成AV片久久| 国产亚洲av片在线观看16女人 | 永久免费视频网站在线观看| 青青青国产在线观看免费| 日本免费人成视频播放| 亚洲国产精品日韩| 日本久久久久亚洲中字幕|