zoukankan      html  css  js  c++  java
  • mybatis插入数据并返回主键(oracle)

    通常我们执行一个inser语句,即使有返回,也只是会返回影响了多少条数据

    @insert("insert into t_user (id,name) values (suser.nextval,#{item.name,jdbcType=VARCHAR})")
    void insert(@Param("item") TUser t);

    但在有些时候,我们还需要获得插入数据的主键,在oracle数据库中,主键并没有办法自动增长,无法使用insert对应的useGeneratedKeys和keyProperty属性自动返回增加的主键。

    这时我们可以使用<selectKey>标签。

    @insert("insert into t_user (id,name) values (#{item.id,jdbcType=NUMERIC},#{item.name,jdbcType=VARCHAR})")
    @SelectKey(statement="select suser.nextval from dual", keyProperty="item.id", before=true, resultType=Long.class)
    void insert(@Param("item") TUser t);

    在上面selectKey中

    before=true,表示该语句会执行在insert之前。

    statement="select suser.nextval from dual",表示我们在这里获取下一个序列值,将该值作为主键。

    resultType=Long.class,表示获取的值为long类型。

    keyProperty="item.id",表示把生成的序列值放入参数TUser中的id属性中。

    此时,在我们的参数@Param("item") TUser t中,他的id值就已经是我们所获取的最新的序列。然后程序会再执行@insert内容,将id值作为参数传递进去。

  • 相关阅读:
    C语言数据类型取值范围
    C语言的概述--学习c的第二天
    开始学习c语言
    Comet 反Ajax: jQuery与PHP实现Ajax长轮询
    jquery的toFixed方法的正确使用
    JavaScript 正则表达式
    JavaScript中原型链存在的问题解析
    vue编程式导航
    vue 动态组件,传递参数
    JavaScript如何封装插件
  • 原文地址:https://www.cnblogs.com/yxth/p/9755713.html
Copyright © 2011-2022 走看看