基本背景
oracle 有 sequence trigger
希望在新增的时候获取到新增这条记录的 id ( oracle 通过 trigger 调取 sequence )
20210203 搞了3个多小时,终于找到一篇我要的文章
https://www.cnblogs.com/tuxiaoer/p/12725777.html
一、实现主键自增
在oracle数据库中,主键并没有办法自动增长,无法使用insert对应的useGeneratedKeys和keyProperty属性自动返回增加的主键。
要实现自增需要修改 ID列为number类型,一下类型作为参考
一、使用selectKey标签
<insert id="addLoginLog" parameterType="map" >
<selectKey keyProperty="id" resultType="int" order="BEFORE">
select nvl(max(id),0)+1 from ap_loginlog
</selectKey>
insert into ap_loginlog(ID,MEMBER_ID) values(#{
id},#{
memberId})
</insert>
keyProperty是指vo类中的主键属性名称,resultType是指vo类中的主键属性类型,order有两个属性,一个是AFTER是指限制性插入语句,一个是BEFORE是指先执行selectKey标签内的语句:select nvl(max(主键名),0)+1 from 表名
二、使用序列
首先创建序列
CREATE SEQUENCE loginlog_squence //序列名
INCREMENT BY 1 //每次增长多少
NOMAXVALUE //MAXVALUE:最大值;NOMAXVALUE:没有最大值
NOCYCLE //序列达到最大值后是否循环;CYCLE:循环;NOCYCLE:不循环
CACHE 10; //CACHE/NOCACHE:是否需要缓存;缓存生成多少个序列值
查看创建的序列
然后再sql语句中插入
<insert id="addLoginLog" parameterType