通常我们执行一个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值作为参数传递进去。

mybatis插入数据并返回主键(oracle)的更多相关文章

  1. mybatis 插入数据时返回主键

    在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:显然,假如主键是你生成后插入的,自然你已经有主键了,显然不需要我们再去获得,所以我们这里处理的是当主键 ...

  2. Mybatis插入数据后返回主键id

    有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段. 单条记录插入并返回 First, if your databas ...

  3. mybatis 插入数据并返回主键值

    <insert id="insert" parameterType="com.pojo.TSubject" useGeneratedKeys=" ...

  4. mysql数据库使用mybatis 插入数据时返回主键

    为了体现题目,特指的是mysql,先贴上代码: <insert id="saveBizProdOrderDetail" useGeneratedKeys="true ...

  5. MyBatis在Oracle中插入数据并返回主键的问题解决

    引言:  在MyBatis中,希望在Oracle中插入数据之时,同一时候返回主键值,而非插入的条数... 环境:MyBatis 3.2 , Oracle. Spring 3.2   SQL Snipp ...

  6. [oracle] 如何使用myBatis在数据库中插入数据并返回主键

    在MyBatis中,希望在Oracle中插入数据的同时返回主键值,而非插入的条数. ① oracle使用 selectKey. U_USER_INFO_SEQ 是在数据库中定义好的这张表关联的序列se ...

  7. Laravel 5 插入数据后返回主键ID

    方法一: $info = DB::table('表名')->insertGetId(['imgName' => $fileName]);//图片名入库后返回添加数据行的主键ID 方法二:( ...

  8. MyBatis插入记录时返回主键id的方法

    有时候插入记录之后需要使用到插入记录的主键,通常是再查询一次来获取主键,但是MyBatis插入记录时可以设置成返回主键id,简化操作,方法大致有两种. 对应实体类: public class User ...

  9. mybatis添加数据时返回主键 insert 返回主键值

    insert 返回主键值 useGeneratedKeys=“true” parameterType=“USer” keyProperty=“id”, <insert id="inse ...

随机推荐

  1. E - Heavy Transportation

    来源poj1797 Background Hugo Heavy is happy. After the breakdown of the Cargolifter project he can now ...

  2. 设置头像、商品、轮播图为背景图时需要的css

    background-repeat: no-repeat;background-size: cover;background-position: center center;

  3. SpringBoot--web版的ocr

    这个项目主要是为了熟悉SpringBoot搭建web项目,及打war包,部署到tomcat中 先贴页面吧 页面很low 毕竟我只是菜鸟,该app程序功能已经写完了,上传图片到服务器,后台接口解析图片中 ...

  4. (转)JVM中的OopMap(zz)

    原文地址: http://www.cnblogs.com/strinkbug/p/6376525.html 在读周智明的深入理解JVM虚拟机时,关于枚举根节点/安全点这部分感觉书上写的不是太明白,找了 ...

  5. python语法_终止循环_break_continue

    break 终止整个循环计算 continue 终止本次循环,continue前的代码执行,continue后的代码不执行,下次循环继续.

  6. ArcPy中mapping常见函数及用法1

    arcpy的mapping模块常见属性方法总结1.如何获取当前地图文档: 方式:mxd = mapping.MapDocument("CURRTENT")引用本地或者网络文档(ar ...

  7. Windows10 家庭版 关闭Windows defender

    管理员权限打开cmd,输入下面命令: reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender&quo ...

  8. docker+elasticsearch的安装

    查询镜像 [root@ elasticsearch]# docker search elasticsearch INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMA ...

  9. 常见web UI 元素操作 及API使用

    1. 链接(Link) // 找到链接元素,这个方法比较直接,即通过超文本链接上的文字信息来定位元素,这种方式一般专门用于定位页面上的超文本链接 WebElement link1 = driver.f ...

  10. [js]面向对象2

    delete删除属性 删除对象的属性 删除未用var定义的变量. delete返回布尔 删除不存在的属性,返回true 无法删除原形中的属性 如 delete obj.toString() resu= ...