工作这么多年。总算遇到一家数据库用oracle的企业了,由于oracle与mysql的不同,mysql设置了主键(id),那他就会实现自增,插入数据时,无需指定id的值,但是oracle却无法实现主键自增,解决方法:sequence(序列)
使用序列完成自增
(1)创建序列(此处的表名为MYBATIS)
create sequence MYBATISminvalue 1 --最小值nomaxvalue --不设置最大值start with 1 --从1开始计数increment by 1 --每次加1个nocycle --一直累加,不循环nocache; --不建缓冲区
(2)插入数据时指定id为序列
<insert id="insert", parameterType="List"><selectKey resultType="Long" order="BEFORE" keyProperty="id">select MYBATIS_sequence.nextval id from dual </selectKey>insert into tableName(id,.....) values (#{id},....); 或者insert into tableName(id,.....) values (MYBATIS_sequence.nextval,....); </insert>
这里面的MYBATIS是创建的序列表的表名
select MYBATIS_sequence.nextval id from dual 获取下一个值
select MYBATIS_sequencecurrval id from dual 获取当前值