SpringMVC+Mybatis+Oracle环境下实现ID自增长

来源:互联网 发布:财务部数据流程图 编辑:程序博客网 时间:2024/06/17 03:12

一、博前

最近使用SpringMVC+Mybatis+Oracle开发一张图运维系统。下面简单说下版本:

SpringMVC --> 4.0.4

Mybatis --> 3.4.3

Oracle 11g

二、代码

1、建立用户表

--用户表create table SYSUSER(  ID              INTEGER primary key not null,  NAME            VARCHAR2(100) not null,  USERNAME        VARCHAR2(100) not null,  PASSWORD        VARCHAR2(100) not null,  USERIMG         Clob,  EMAIL           VARCHAR2(32),  PHONE           VARCHAR2(32),  IS_LLOCKED      INTEGER,  LAST_LOGIN_TIME DATE,  LAST_LOGIN_IP   VARCHAR2(100),  COMMENTS        VARCHAR2(4000),  SORTKEY         INTEGER,  STATUS          INTEGER not null)

2、为SYSUSER表建立序列

CREATE SEQUENCE SYSUSER_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1 NOCACHE;
3、Mybatis中配置如下:

<sql id='SYSUSER_ID_SEQ '>SYSUSER_ID_SEQ .nextval</sql><insert id="save" parameterType="pd"><selectKey keyProperty="Id" resultType="int" order="BEFORE">     select <include refid="SYSUSER_ID_SEQ" /> from dual</selectKey>insert into SYSUSER(ID,NAME,PARENT_ID,SEARCH_KEY,COMMENTS,SORTKEY,STATUS,CREATE_TIME) values (#{Id},#{NAME, jdbcType=VARCHAR},#{PARENT_ID, jdbcType=VARCHAR},#{SEARCH_KEY, jdbcType=VARCHAR},#{COMMENTS, jdbcType=VARCHAR},#{SORTKEY, jdbcType=INTEGER},#{STATUS, jdbcType=INTEGER},#{CREATE_TIME, jdbcType=DATE})</insert>

这里稍作解释:上面的配置应该注意三点:

第一,SYSUSER_ID_SEQ .nextval ,是获取序列的下一个值;

第二,order="BEFORE" ,是指定获取该序列值的时间是在insert操作之前;

第三,#{Id} ,是将上面定义的Id运用到insert操作中。

4、其他代码省略

三、注意:

1、该项目是从sql server转成Oracle数据库的,清注意配置sql语句时,两者的写法差异。
2、请注意自增长的差异。


原创粉丝点击