MyBatis中获取Oracle序列

一、应用情景:

      当应用系统中使用了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之后执行,否则报错。


猜你喜欢

转载自blog.csdn.net/joyksk/article/details/79710423