47、自適應mysql和oracle(2)
阿新 • • 發佈:2018-12-03
學習過程:
接著上一節課,下面我們設計一個工廠類,根據資料庫dao層生產的工廠。這個類根據jdbc.properties配置檔案的db屬性讀取配置檔案,然後生成不同的dao實現,新建一個FactoryDao類,程式碼如下:
public class FactoryDao { private static FactoryDao factoryDao; private String db; private FactoryDao(){ Properties properties=new Properties(); try { properties.load(this.getClass().getClassLoader().getResourceAsStream("jdbc.properties")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } db=properties.getProperty("db"); } public static FactoryDao getInstanse(){ if(factoryDao==null){ factoryDao=new FactoryDao(); } return factoryDao; } public IGoodsDao newGoodsDao(){ IGoodsDao goodsDao=null; if(db.equals("mysql")){ goodsDao=new GoodsDao(); }else{ goodsDao=new GoodsOracleDao(); } return goodsDao; } public IGoodsTypesDao newGoodsTypesDao(){ IGoodsTypesDao goodsTypesDao=null; if(db.equals("mysql")){ goodsTypesDao=new GoodsTypesDao(); }else{ goodsTypesDao=new GoodsTypesOracleDao(); } return goodsTypesDao; } }
修改所有的用到dao物件的實現,比如下面這個GoodsDao,我們不能通過new構造物件了。如下面的程式碼:
GoodsDao goodsDao = GoodsDao();
GoodsTypesDao goodsTypesDao = GoodsTypesDao();
修改成為從工廠中獲得。並且使用介面定義
IGoodsTypesDao goodsTypesDao=FactoryDao.getInstance().GoodsTypesDao(); IGoodsDao goodsDao=FactoryDao.getInstance().GoodsDao();
修改完成就可以啟動測試了,修改jdbc.properties,可以在oracle中隨便新增一些資料,就可以了,啟動專案,瀏覽主頁就可以看到專案現在操作的是oralce資料庫,分頁等等所有的功能都能夠正常執行,