一、博前
最近使用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、请注意自增长的差异。