如何使用MyBatis调用Oracle数据库序列号?

时间:2015-05-04 09:31:10

标签: java oracle mybatis

我想使用MyBatis从我的Oracle数据库10g中调用序列号,但我只收到如下错误消息:

ORA-02289: Sequence is not available.

如何从Oracle数据库中调用序列号?

以下是关于当前MyBatis版本的Maven Project Dependency:

<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis-spring</artifactId>
   <version>1.1.1</version>
</dependency>

这是我的Dao Java课程:

long mySeqNumber = myDaoClass.getNewNumber(); // here I get an exception

这是我的xml声明:

<select id="getNewNumber" resultType="java.lang.Long" >
    SELECT mySeq.nextval
    FROM dual
</select>

2 个答案:

答案 0 :(得分:0)

我认为您使用nextval进行插入。请尝试以下内容:

<insert id="insertPerson" parameterType="Person" useGeneratedKeys="true"> 
  <selectKey keyProperty="personId" resultType="int" order="BEFORE">
    SELECT nextVal('mySeq')
  </selectKey>
  INSERT INTO person (personId,PersonName) VALUES (#{personId},#{personName}) 
</insert>

您也可以使用此SELECT nextVal('mySeq')

代替SELECT mySeq.nextVal from dual

答案 1 :(得分:0)

我能够做到这一点,

<dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency> 



<select id="getUploadId" resultType="int">
    select {schema}.SEQUENCE_NAME.NEXTVAL from dual
</select>