JFinal Online Manual
/ Oracle 支持
Oracle 支持
Oracle 數(shù)據(jù)庫具有一定的特殊性,JFinal 針對這些特殊性進(jìn)行了一些額外的支持以方便廣 大的 Oracle 使用者。以下是一個完整的 Oracle 配置示例:
public class DemoConfig extends JFinalConfig {
public void configPlugin(Plugins me) { C3p0Plugin cp = new C3p0Plugin(……);
//配置Oracle驅(qū)動
cp. setDriverClass("oracle.jdbc.driver.OracleDriver"); me.add(cp);
ActiveRecordPlugin arp = new ActiveRecordPlugin(cp); me.add(arp);
// 配置Oracle方言
arp.setDialect(new OracleDialect());
// 配置屬性名(字段名)大小寫不敏感容器工廠 arp.setContainerFactory(new CaseInsensitiveContainerFactory()); arp.addMapping("user", "user_id", User.class);
}
public void configPlugin(Plugins me) { C3p0Plugin cp = new C3p0Plugin(……);
//配置Oracle驅(qū)動
cp. setDriverClass("oracle.jdbc.driver.OracleDriver"); me.add(cp);
ActiveRecordPlugin arp = new ActiveRecordPlugin(cp); me.add(arp);
// 配置Oracle方言
arp.setDialect(new OracleDialect());
// 配置屬性名(字段名)大小寫不敏感容器工廠 arp.setContainerFactory(new CaseInsensitiveContainerFactory()); arp.addMapping("user", "user_id", User.class);
}
由于 Oracle 數(shù)據(jù)庫會自動將屬性名(字段名)轉(zhuǎn)換成大寫,所以需要手動指定主鍵名為大寫, 如:arp.addMaping(“user”, “ID”, User.class)。如果想讓 ActiveRecord 對屬性名(字段名)的大 小 寫 不 敏 感 可 以 通 過 設(shè) 置 CaseInsensitiveContainerFactory 來達(dá)到 , 有 了 這 個 設(shè) 置 , 則 arp.addMaping(“user”, “ID”, User.class)不再需要了。
另外,Oracle 并未直接支持自增主鍵,JFinal 為此提供了便捷的解決方案。要讓 Oracle 支 持自動主鍵主要分為兩步:一是創(chuàng)建序列,二是在 model 中使用這個序列,具體辦法如下:
1:通過如下辦法創(chuàng)建序列,本例中序列名為:MY_SEQ
CREATE SEQUENCE MY_SEQ INCREMENT BY 1
MINVALUE 1
MAXVALUE 9999999999999999
START WITH 1
CACHE 20;
MINVALUE 1
MAXVALUE 9999999999999999
START WITH 1
CACHE 20;
2:在 YourModel.set(…)中使用上面創(chuàng)建的序列
// 創(chuàng)建User并使用序列
User user = new User().set("id", "MY_SEQ.nextval").set("age", 18); user.save();
// 獲取id值
Integer id = user.get("id");
User user = new User().set("id", "MY_SEQ.nextval").set("age", 18); user.save();
// 獲取id值
Integer id = user.get("id");
序列的使用很簡單,只需要 yourModel.set(主鍵名, 序列名 + “.nextval”)就可以了。特別注意這里的 “.nextval” 后綴一定要是小寫,OracleDialect 對該值的大小寫敏感。