MySQL建表时必须有一个主键(PRIMARY KEY), 并且每条主键内容必须唯一,作为该条数据在表中的唯一标识。同时常常给主键一个”auto_increment”属性,让主键所在字段每条记录都自增”1″。
例如某张表中的”id”作为主键,则mybatis中添加数据的写法可以是:
<insert id="saveSmartUser" parameterType="com.sun.repository.bean.SmartUser"
useGeneratedKeys="true" keyProperty="id">
INSERT INTO SMART_USER(USERNAME, PASSWORD, AGE, GENDER) VALUES
(#{userName},#{password},#{age},#{gender})
</insert>
Oracle没有这个”auto_increment”属性,所以它没法像MySQL般在表内定义自增主键。但是,Oracle里的序列(SEQUENCE)和触发器(TRIGGER),可间接实现自增主键的作用。下面总结了三种oracle中实现主键自增长的方式
1.从数据库查询最大的id值,然后在此基础上加1
<insert id="saveSmartUser" parameterType="com.sun.repository.bean.SmartUser" >
<selectKey keyProperty="id" resultType="int" order="BEFORE">
select nvl(max(id