Mybatis selectKey不返回序列值

Posted

技术标签:

【中文标题】Mybatis selectKey不返回序列值【英文标题】:Mybatis selectKey not returning sequence value 【发布时间】:2017-05-18 00:42:01 【问题描述】:

我在 mybatis 中使用下面的插入查询。在 ibatis 中,同样的查询将 seq_consumer_id.nextval 返回给 java 中的调用方法,并将其插入到 consumer_id 列中。但是在 mybatis 中,该方法的返回值始终为 1(我假设它是插入的行数),尽管 consumer_id 列是从序列中正确更新的。难道我们不能生成密钥,插入它并返回给mybatis中的java类吗?

<insert id="insertConsumer" parameterType="com.enrollment.vo.ConsumerVO">
            <selectKey keyProperty="id" resultType="int" order="BEFORE">
                select seq_consumer_id.nextval as id from dual
            </selectKey>
                    insert into quotation_consumer (consumer_id, consumer_type, dob,  
                    create_date, ENROLLMENT_INDICATOR, QUOTE_ID,IS_PRIMARY) 
                    values(#id,#type.id, #birthdate, jdbcType=DATE, default, #enrollmentIndicator, 
                    #quoteId,#isPrimary)

        </insert>

【问题讨论】:

【参考方案1】:

该方法确实返回了受影响的行数。

序列ID存储在com.enrollment.vo.ConsumerVOìd属性中作为参数传递。

【讨论】:

以上是关于Mybatis selectKey不返回序列值的主要内容,如果未能解决你的问题,请参考以下文章

mybatis通过selectkey返回insert或update后的值

Mybatis中selectKey源码分析

Mybatis 不回滚序列

mybatis 返回值

MyBatis insert/delete/update 的返回值

Mybatis 示例之 SelectKey