create sequence a_seq --创建序列名字为 a_seq
minvalue 1 -- 最小值为 1
maxvalue 99999 --- 最大值为 99999
start with 1 --- 开始值 1
increment by 1 ---每次增长值 1
cache 100; ----缓存大小 100
用法 比如 你查询emp表的时候
关于selectkey
属性 | 描述 |
---|
keyProperty | selectKey
语句结果应该被设置的目标属性。 |
resultType | 结果的类型。MyBatis 通常可以算出来,但是写上也没有问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。 |
order | 这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为
AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用。 |
statementType | 和前面的相 同,MyBatis 支持 STATEMENT ,PREPARED 和CALLABLE 语句的映射类型,分别代表 PreparedStatement 和CallableStatement 类型。 |
需要返回值的时候:
<insert id="insertProduct-ORACLE" parameterClass="product">
<selectKey resultClass="int" keyProperty="id" >
SELECT a_seq.NEXTVAL AS VALUE FROM DUAL
</selectKey>
insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#)
</insert>
不需要返回值时可以直接写:
<insert id="insertProduct" parameterClass="product">
INSERT INTO PRODUCT ( PRD_ID, PRD_DESCRIPTION)
VALUES ( a_seq.NEXTVAL, #id#, #description#)
</insert>