Eova Oracle 自增长的处理

原创
2015/07/14 16:17
阅读数 916

Oracle自增长的处理:

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

Eova的处理:

1.默认sequence

规则:seq_表名.nextval

PS:通过修改JFinal源码,分别在Model.save() 和 Record.save() 默认使用序列,具体请阅读源码。

使用默认Seq举例:

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

2.通过默认值自定义:

CrudManager.buildData();

clipboard

2.1 自定义Sequence

自定义Seq举例:

create sequence seq_eova_user increment by 1 start with 21 maxvalue 9999999999;

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

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

clipboard[1]

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

2.2默认ID值

clipboard[2]

新增后:

clipboard[3]

Other:

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

DbUtil.createOracleSql();

使用方法:

连接到Mysql数据源上:

eova.config 配置:

initSql = true

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

展开阅读全文
打赏
0
0 收藏
分享
加载中
Eova博主

引用来自“JFinal”的评论

jfinal 早已提供 oracle 自增主键功能,为啥不直接用呢?
我其实 看JFinal源码的时候 还很奇怪 判断 “.nextval” 作甚,貌似没什么用, 我这里设计的是希望用户,不用关心Oracle自增的问题,像使用Mysql一样使用Oracle,自增什么的交给Eova去完成,当然用户需要自增,也可以自行指定,算是有一点点业务吧,所以和JFinal的默认设定 并不冲突。 我觉得 JFinal应该添加默认判定,如果主键为空,默认添加成默认序列。
2015/07/14 20:15
回复
举报
Eova博主

引用来自“JFinal”的评论

jfinal 早已提供 oracle 自增主键功能,为啥不直接用呢?

27特意找了一下 没看见哇 文档上写了吗
2015/07/14 20:01
回复
举报
jfinal 早已提供 oracle 自增主键功能,为啥不直接用呢?
2015/07/14 18:52
回复
举报
更多评论
打赏
3 评论
0 收藏
0
分享
返回顶部
顶部