5.11 Oracle 支持

2022-07-11 10:21 更新

Oracle 數(shù)據(jù)庫(kù)具有一定的特殊性,JFinal 針對(duì)這些特殊性進(jìn)行了一些額外的支持以方便廣 大的 Oracle 使用者。以下是一個(gè)完整的 Oracle 配置示例:

public class DemoConfig extends JFinalConfig {
public void configPlugin(Plugins me) { C3p0Plugin cp = new C3p0Plugin(……);
//配置Oracle驅(qū)動(dòng)
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ù)庫(kù)會(huì)自動(dòng)將屬性名(字段名)轉(zhuǎn)換成大寫,所以需要手動(dòng)指定主鍵名為大寫, 如:arp.addMaping(“user”, “ID”, User.class)。如果想讓 ActiveRecord 對(duì)屬性名(字段名)的大 小 寫 不 敏 感 可 以 通 過 設(shè) 置 CaseInsensitiveContainerFactory 來達(dá)到 , 有 了 這 個(gè) 設(shè) 置 , 則 arp.addMaping(“user”, “ID”, User.class)不再需要了。


另外,Oracle 并未直接支持自增主鍵,JFinal 為此提供了便捷的解決方案。要讓 Oracle 支 持自動(dòng)主鍵主要分為兩步:一是創(chuàng)建序列,二是在 model 中使用這個(gè)序列,具體辦法如下:

1:通過如下辦法創(chuàng)建序列,本例中序列名為:MY_SEQ

CREATE SEQUENCE MY_SEQ INCREMENT BY 1
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");

序列的使用很簡(jiǎn)單,只需要 yourModel.set(主鍵名,  序列名 + “.nextval”)就可以了。特別注意這里的  “.nextval”  后綴一定要是小寫,OracleDialect 對(duì)該值的大小寫敏感。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)