1. 程式人生 > >47、自適應mysql和oracle(2)

47、自適應mysql和oracle(2)

學習過程:

接著上一節課,下面我們設計一個工廠類,根據資料庫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資料庫,分頁等等所有的功能都能夠正常執行,