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

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

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


    隨筆-35  評論-97  文章-0  trackbacks-0

    在某些情況下,我們可能需要同一個實(shí)體bean對應(yīng)著多個數(shù)據(jù)庫表,比如,你的數(shù)據(jù)庫表是按照每個月添加一個,但是對應(yīng)的實(shí)體bean并沒有改變。這個時候,我們就需要支持表明變換了,否則,難道你每個月改變一下orm映射配置嗎?如果每天都換一個表呢?

    在EasyDBO上,要做到支持表名變換是很容易的。只需在使用各種數(shù)據(jù)庫操作時添加一個表名稱的的變量(按照一定的算法產(chǎn)生),如原來的easyDB.add(object)變?yōu)閑asyDB.add(object, tablename)。

    在具體的實(shí)現(xiàn)上,我們應(yīng)該從哪里入手去替換表名呢?看看EasyDBO的源碼,保存有數(shù)據(jù)庫表名稱的是在DBTable這個類中,其中name就是指數(shù)據(jù)庫表名,利用setter方法,很容易植入數(shù)據(jù)庫表名。但是在哪個時機(jī)植入比較合適?當(dāng)然選取盡可能可以減少重復(fù)代碼就可以完成的時機(jī)。

    看看吧,在信息轉(zhuǎn)換為DBTable對象時,再重新植入表名,就可以了。在EasyDB類中,方法private DBTable findTable(Class cls)會從類或?qū)ο笾蝎@取信息包裝成DBTable對象,所以這是關(guān)鍵的地方。private DBObject obj2dbo(Object obj)和其他的方法都直接或者間接調(diào)findTable(Class cls)來獲取表信息。做一些小改動就可以了,最好是添加一個重載的方法,而不是修改原來的方法。修改添加兩個樣板,其他方法也差不多是這樣:

        private DBTable findTable(Class cls, String tableName)
        
    {
            
    if(!StringUtils.hasText(tableName)){
                
    return findTable(cls);
            }

            DBTable table 
    = this.mapping.findTable(cls);
            table.setName(tableName);
            
    return table;
        }


        
    private DBObject obj2dbo(Object obj, String tableName)
        
    {
            
    if(!StringUtils.hasText(tableName)){
                
    return obj2dbo(obj);
            }

            
    /**
             * 若obj本來就是泛數(shù)據(jù)表DBOjbect對象,則直接返回
             
    */

            
    if(obj.getClass() == DBObject.class)
            
    {
                
    return (DBObject)obj;
            }

            DBTable table 
    = findTable(obj.getClass(),tableName);
            DBObject dbo 
    = new DBObject(table);
            dbo.setValue(obj2dboMap(obj, table));
            dbo.setIdValue(dbo.get(table.getId()));
            
    return dbo;
        }

    給出修改后的EasyDB類的源碼,在這里下載。

     

    posted on 2007-07-06 10:42 三告習(xí)習(xí) 閱讀(965) 評論(2)  編輯  收藏 所屬分類: easyJF-projects

    評論:
    # re: [EasyDBO] EasyDBO添加支持?jǐn)?shù)據(jù)庫表名(表結(jié)構(gòu)不變)變換功能 2007-07-16 20:53 | 小雨
    這個方法還真好用,以前沒這樣用過。  回復(fù)  更多評論
      
    # re: [EasyDBO] EasyDBO添加支持?jǐn)?shù)據(jù)庫表名(表結(jié)構(gòu)不變)變換功能 2007-07-16 21:09 | 三告習(xí)習(xí)
    @小雨
    呵呵,過獎咯
    因?yàn)樾枰瑴愑靡幌露?

      回復(fù)  更多評論
      
    主站蜘蛛池模板: 亚洲宅男天堂在线观看无病毒| 深夜国产福利99亚洲视频| 亚洲国产精品一区第二页| 黄色三级三级免费看| 午夜老司机免费视频| 亚洲变态另类一区二区三区| 无码国产精品久久一区免费| 亚洲a视频在线观看| 99久久久国产精品免费无卡顿| 亚洲综合激情视频| 99热在线观看免费| 亚洲国产成人久久| 黄页网站在线观看免费高清| 亚洲综合丁香婷婷六月香| 成年美女黄网站18禁免费| 亚洲风情亚Aⅴ在线发布| 国产一精品一aⅴ一免费| 四虎一区二区成人免费影院网址| 亚洲人成电影在线播放| 伊人久久大香线蕉免费视频| 亚洲国产三级在线观看| 最近免费中文字幕mv电影| 亚洲国产精品一区二区三区在线观看| 久久精品女人天堂AV免费观看| 亚洲AV无码资源在线观看| 亚洲色一色噜一噜噜噜| 久久国产精品免费观看| 亚洲av无码久久忘忧草| 免费A级毛片无码久久版| xxxxx做受大片视频免费| 亚洲激情在线观看| 免费a级毛片无码a∨蜜芽试看| 亚洲av无码无线在线观看| 国产精品亚洲mnbav网站| 伊人久久免费视频| 亚洲熟女精品中文字幕| 不卡精品国产_亚洲人成在线| 57pao国产成视频免费播放| 色欲aⅴ亚洲情无码AV蜜桃| 亚洲精品成人片在线观看精品字幕 | 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www |