W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
ActiveRecordPlugin 可同時支持多數(shù)據(jù)源、多方言、多緩存、多事務級別等特性,對每個 ActiveRecordPlugin 可進行彼此獨立的配置。簡言之 JFinal 可以同時使用多數(shù)據(jù)源,并且可 以針對這多個數(shù)據(jù)源配置獨立的方言、緩存、事務級別等。
當使用多數(shù)據(jù)源時,只需要對每個 ActiveRecordPlugin 指定一個 configName 即可,如下是代碼示例:
public void configPlugin(Plugins me) {
// mysql 數(shù)據(jù)源
C3p0Plugin dsMysql = new C3p0Plugin(…); me.add(dsMysql);
// mysql ActiveRecrodPlugin 實例,并指定configName為 mysql ActiveRecordPlugin arpMysql = new ActiveRecordPlugin("mysql", dsMysql); me.add(arpMysql);
arpMysql.setCache(new EhCache()); arpMysql.addMapping("user", User.class);
// oracle 數(shù)據(jù)源
C3p0Plugin dsOracle = new C3p0Plugin(…); me.add(dsOracle);
// oracle ActiveRecrodPlugin 實例,并指定configName為 oracle ActiveRecordPlugin arpOracle = new ActiveRecordPlugin("oracle", dsOracle); me.add(arpOracle);
arpOracle.setDialect(new OracleDialect()); arpOracle.setTransactionLevel(8); arpOracle.addMapping("blog", Blog.class);
}
以上代碼創(chuàng)建了創(chuàng)了兩個 ActiveRecordPlugin 實例 arpMysql 與 arpOrace,特別注意創(chuàng)建實 例的同時指定其 configName 分別為 mysql 與 oracle。arpMysql 與 arpOracle 分別映射了不同的Model,配置了不同的方言。
對于 Model 的使用,不同的 Model 會自動找到其所屬的 ActiveRecrodPlugin 實例以及相關 配置進行數(shù)據(jù)庫操作。假如希望同一個 Model 能夠切換到不同的數(shù)據(jù)源上使用,也極度方便, 這種用法非常適合不同數(shù)據(jù)源中的 table 擁有相同表結構的情況,開發(fā)者希望用同一個 Model 來操作這些相同表結構的 table,以下是示例代碼:
public void multiDsModel() {
// 默認使用arp.addMapping(...)時關聯(lián)起來的數(shù)據(jù)源
Blog blog = Blog.me.findById(123);
// 只需調用一次use方法即可切換到另一數(shù)據(jù)源上去
blog.use("backupDatabase").save();
}
上例中的代碼,blog.use(“backupDatabase”)方法切換數(shù)據(jù)源到 backupDatabase 并直接將數(shù) 據(jù)保存起來。
特別注意:只有在同一個 Model 希望對應到多個數(shù)據(jù)源的 table 時才需要使用 use 方法,如果 同一個 Model 唯一對應一個數(shù)據(jù)源的一個 table,那么數(shù)據(jù)源的切換是自動的,無需使用 use 方法。
對于 Db + Record 的使用,數(shù)據(jù)源的切換需要使用 Db.use(cnfigName)方法得到數(shù)據(jù)庫操作 對象,然后就可以進行數(shù)據(jù)庫操作了,以下是代碼示例:
// 查詢 dsMysql數(shù)據(jù)源中的 user
List<Record> users = Db.use("mysql").find("select * from user");
// 查詢 dsOracle數(shù)據(jù)源中的 blog
List<Record> blogs = Db.use("oracle").find("select * from blog");
以上兩行代碼,分別通過 configName 為 mysql、oracle 得到各自的數(shù)據(jù)庫操作對象,然后 就可以如同單數(shù)據(jù)完全一樣的方式來使用數(shù)據(jù)庫操作 API 了。簡言之,對于 Db + Record 來 說,多數(shù)據(jù)源相比單數(shù)據(jù)源僅需多調用一下 Db.use(configName),隨后的 API 使用方式完全一 樣。
注意最先創(chuàng)建的 ActiveRecrodPlugin 實例將會成為主數(shù)據(jù)源,可以省略 configName。最先創(chuàng)建的 ActiveRecrodPlugin 實例中的配置將默認成為主配置,此外還可以通過設置 configName為 DbKit.MAIN_CONFIG_NAME 常量來設置主配置。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: