Oracle自增长的处理:

众所周知,Oracle没有自增概念,需要创建一个sequence,然后获得唯一ID。

Eova的处理:
1.自动指定约定Sequence
规则:seq_表名.nextval

public class EovaDbPro extends DbPro {

    public EovaDbPro(String configName) {
        super(configName);
    }

    @Override
    public boolean save(String tableName, String primaryKey, Record record) {
        // Oracle && 单主键 && 主键没值 -> 指定Sequence
        if (xx.isOracle() && !primaryKey.contains(",") && record.get(primaryKey) == null) {
            record.set(primaryKey, EovaConst.SEQ_ + tableName + ".nextval");
        }
        return super.save(tableName, primaryKey, record);
    }

}

使用默认Seq举例:

Sql: insert into eova_log(id, user_id, type, info, ip) values(seq_eova_log.nextval, ?, ?, ?, ?)

2.通过默认值自定义:

2.1 自定义Sequence
如果不想让系统指定固定Sequence
想自定义或者共用Sequence
可以使用默认值自行指定.

自定义Seq举例:
create sequence seq_eova_user increment by 1 start with 21 maxvalue 9999999999;

PS:这里对名字没有约束,sequence 可以随意取名,例如:my_seq_id

自行创建任意名字的sequence,然后通过 eova_field.defaulter 指定

Sql: insert into eova_user(login_id, id, rid, nickname, login_pwd) values(?, seq_eova_user.nextval, ?, ?, ?)

2.2 默认ID值

新增后:

2.3 生成全局唯一ID
默认值填写 UUID即可
UUID规则:32位无去中划线全大写

UUID.randomUUID().toString().replaceAll("-", "").toUpperCase()

注意设置字段新增/更新状态=隐藏

Other:

Eova提供了由Mysql自动生成Oracle脚本的工具类:

DbUtil.createOracleSql();

使用方法:

连接到Mysql数据源上:

eova.config 配置:

initSql = true

系统启动时会将Sql脚本输出在控制台,复制执行即可!

© 2019 EOVA.CN all right reserved,powered by Gitbook本文档更新于: 2019-07-22 16:07

results matching ""

    No results matching ""