Jfinal如何正確使用多數據源?

  1. JFinal 爲了省代碼達到極速開發,所以只支持一個主數據源,同時支持多個輔數據源。所謂主數據源是指當你在使用JFinal對數據庫操作時,如果沒有明確指定數據源,那麼默認爲使用了主數據源。
  2. 主數據源可以在兩個地方設置,其一是在 new ActiveRecordPlugin 時指定,其二是使用DbKit.setDataSource(DataSource ds)來指定。ActiverecordPlugin 中所依賴的主數據源,以及數據庫配置都是共享的,所以 new 出多個 ActiveRecordPlugin來是沒有意義的。主數據源可以通過DbKit.setDataSource(...)在程序中動態指定。
  3. C3P0Plugin 可以創建多個對象,這是有意義的,所以樓主上面給的代碼是有意義的。
  4. Oracle 在保存數據時 primaryKey 是指主鍵名稱,例如可以是"ID",而Record這個參數中,要給定相應的主鍵值,如new Record().set("ID", 123);

以下給出多數據源的使用例子代碼,首先是初始化代碼:

01 public void configPlugin(Plugins me) {
02   // C3p0Plugin可以有多個對象存在
03   C3p0Plugin c3p0Plugin = new C3p0Plugin(...);
04   C3p0Plugin c3p0Plugin2 = new C3p0Plugin(...);
05   me.add(c3p0Plugin);
06   me.add(c3p0Plugin2);
07  
08   // ActiveRecordPlugin 只能有一個對象存在
09   ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
10   me.add(arp);
11   arp.addMapping("vote", Vote.class);
12 }

以下是多數據源使用代碼:

1 // 沒有指定數據源的時候,默認使用是的主數據源
2 Vote vote = Vote.dao.findById(123);
3  
4 // 指定了數據源,默認使用的是輔數據源,注意下面方法的第一個參數都指定了數據源
5 List<Record> votes = Db.find(c3p0Plugin2.getDataSource(), "select * from vote");
6 Db.save(C3p0Plugin2.getDataSource(), "vote""ID"newRecord().set("ID"888).set(...).set(...));
發佈了82 篇原創文章 · 獲贊 10 · 訪問量 39萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章