mybatis sysbase id 自增特殊处理

JZ0NK

Generated keys are not available because either the Statement.NO_GENERATED_KEYS was used or no keys were automatically generated.

Description: The getGeneratedKeys() method is unable to return the auto-generated keys because the statement was executed with .NO_GENERATED_KEYS or the statement produced no auto-generated keys.

Action: Use getGeneratedKeys() only on statements executed with .RETURN_GENERATED_KEYS or those that are expected to auto-generate keys.

sybase数据库使用mybatis框架插入数据返回主键值,sybase数据库是个冷门东西。使用常规的搞法,例如:

<insert id="insert" parameterType="com.talkweb.zqgzt.service.pojo.BAS_FILE">  
        <selectKey resultType="integer" order="AFTER" keyProperty="ID">  
            select @@IDENTITY as ID  
        </selectKey>  
        INSERT INTO BAS_FILE (  
            <if test="FJMC!=null">FJMC,</if>  
            <if test="PATH!=null">PATH,</if>  
            SCSJ  
        ) VALUES(  
            <if test="FJMC!=null">#{FJMC},</if>  
            <if test="PATH!=null">#{PATH},</if>  
            getdate()  
        )  
    </insert>  
 这样返回的主键值永远是0,使用下面这种BT的搞法,居然可以返回正确的值:

<select id="selectInsert" parameterType="com.talkweb.zqgzt.service.pojo.BAS_FILE" resultType="int">  
        INSERT INTO BAS_FILE (  
            <if test="FJMC!=null">FJMC,</if>  
            <if test="PATH!=null">PATH,</if>  
            SCSJ  
        ) VALUES(  
            <if test="FJMC!=null">#{FJMC},</if>  
            <if test="PATH!=null">#{PATH},</if>  
            getdate()  
        )  
        select @@IDENTITY as ID  
    </select>  
 在DAO层使用 selectOne()方法来取得主键值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值