<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

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

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

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

    看看吧,在信息轉換為DBTable對象時,再重新植入表名,就可以了。在EasyDB類中,方法private DBTable findTable(Class cls)會從類或對象中獲取信息包裝成DBTable對象,所以這是關鍵的地方。private DBObject obj2dbo(Object obj)和其他的方法都直接或者間接調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本來就是泛數據表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 三告習習 閱讀(965) 評論(2)  編輯  收藏 所屬分類: easyJF-projects

    評論:
    # re: [EasyDBO] EasyDBO添加支持數據庫表名(表結構不變)變換功能 2007-07-16 20:53 | 小雨
    這個方法還真好用,以前沒這樣用過。  回復  更多評論
      
    # re: [EasyDBO] EasyDBO添加支持數據庫表名(表結構不變)變換功能 2007-07-16 21:09 | 三告習習
    @小雨
    呵呵,過獎咯
    因為需要,湊用一下而已

      回復  更多評論
      
    主站蜘蛛池模板: 久久久久亚洲AV成人网人人软件| 日本特黄特色免费大片| 很黄很色很刺激的视频免费| 永久免费av无码不卡在线观看| 暖暖在线日本免费中文| 国产亚洲精品激情都市| 亚洲av福利无码无一区二区| 亚洲av无码国产综合专区| 老司机亚洲精品影院在线观看| 一本岛v免费不卡一二三区| 未满十八18禁止免费无码网站| 永久免费av无码网站韩国毛片| 午夜亚洲福利在线老司机| 亚洲Av永久无码精品三区在线| 亚洲中文字幕在线无码一区二区| 日本亚洲欧美色视频在线播放 | 亚洲午夜成激人情在线影院| 天堂亚洲国产中文在线| 又长又大又粗又硬3p免费视频| 三年片在线观看免费观看大全动漫| 国产免费久久精品99re丫y| 亚洲AV之男人的天堂| 亚洲AV成人一区二区三区AV| 亚洲另类无码专区丝袜| 大地影院MV在线观看视频免费| 日韩在线免费视频| 亚洲综合国产精品第一页| 亚洲国产高清在线精品一区| 免费一级做a爰片久久毛片潮| 在线看无码的免费网站| 免费国产成人高清视频网站| 久久精品亚洲日本佐佐木明希| 亚洲一区二区观看播放| av永久免费网站在线观看 | 小草在线看片免费人成视久网| 好大好深好猛好爽视频免费| 亚洲热线99精品视频| 亚洲GV天堂无码男同在线观看| 免费国产叼嘿视频大全网站| 国产三级免费电影| 亚洲美女精品视频|