一、应用情景:
当应用系统中使用了mybatis,并且首先需要获取序列的下一个值来完成某些功能操作,之后再进行数据的添加操作。
二、代码:
<select id="findMaxId" parameterType="pd" resultType="java.lang.Integer" useCache="false" flushCache="true" >
select APP_CUSTOM_ID_SEQ.NEXTVAL FROM DUAL
</select>
<sql id='APP_CUSTOM_ID_SEQ'>APP_CUSTOM_ID_SEQ.currval</sql>
<insert id="save" parameterType="pd">
<selectKey keyProperty="Id" resultType="int" order="BEFORE">
select <include refid="APP_CUSTOM_ID_SEQ" /> from dual
</selectKey>
insert into APP_CUSTOM(
ID,
CREATE_NAME,
CREATE_TIME,
ALTER_TIME,
CREATE_USERNAME,
APP_DES
)values(
#{Id},
#{CREATE_NAME},
#{CREATE_TIME},
#{ALTER_TIME},
#{CREATE_USERNAME},
#{APP_DES}
)
</insert>
注:上面数据插入中的APP_CUSTOM_ID_SEQ为获取序列的当前值,不能单独执行,需要在获取nextval之后执行,否则报错。