- JFinal 爲了省代碼達到極速開發,所以只支持一個主數據源,同時支持多個輔數據源。所謂主數據源是指當你在使用JFinal對數據庫操作時,如果沒有明確指定數據源,那麼默認爲使用了主數據源。
- 主數據源可以在兩個地方設置,其一是在 new ActiveRecordPlugin 時指定,其二是使用DbKit.setDataSource(DataSource ds)來指定。ActiverecordPlugin 中所依賴的主數據源,以及數據庫配置都是共享的,所以 new 出多個 ActiveRecordPlugin來是沒有意義的。主數據源可以通過DbKit.setDataSource(...)在程序中動態指定。
- C3P0Plugin 可以創建多個對象,這是有意義的,所以樓主上面給的代碼是有意義的。
- Oracle 在保存數據時 primaryKey 是指主鍵名稱,例如可以是"ID",而Record這個參數中,要給定相應的主鍵值,如new Record().set("ID", 123);
以下給出多數據源的使用例子代碼,首先是初始化代碼:
01 |
public void configPlugin(Plugins
me) { |
03 |
C3p0Plugin
c3p0Plugin = new C3p0Plugin(...); |
04 |
C3p0Plugin
c3p0Plugin2 = new C3p0Plugin(...); |
09 |
ActiveRecordPlugin
arp = new ActiveRecordPlugin(c3p0Plugin); |
11 |
arp.addMapping( "vote" ,
Vote. class ); |
以下是多數據源使用代碼:
2 |
Vote
vote = Vote.dao.findById( 123 ); |
5 |
List<Record>
votes = Db.find(c3p0Plugin2.getDataSource(), "select
* from vote" ); |
6 |
Db.save(C3p0Plugin2.getDataSource(), "vote" , "ID" , new Record().set( "ID" , 888 ).set(...).set(...)); |