Mybatis 插入操作时获取主键 (Oracle 触发器与SEQ)

1.通过Oracle序列

  1. -- Create sequence
  2. create sequence SEQ_DW_EWSYSTEM
  3. minvalue 1
  4. maxvalue 999999999999999999999999999
  5. start with 1
  6. increment by 1
  7. cache 20;
  1. <insert id="insertEwsystem" parameterType="Ewsystem">
  2. <selectKey keyProperty="id" resultType="long" order="BEFORE">
  3. SELECT SEQ_EWSYSTEM.NEXTVAL FROM DUAL <!-- SELECT DECODE(MAX(ID),NULL,0,MAX(ID))+1 FROM EWSYSTEM -->
  4. </selectKey>
  5. INSERT INTO EWSYSTEM (ID,ORG_ID,NAME)VALUES(#{id},#{orgId,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR})
  6. </insert>

2.通过Oracle触发器

  1. create or replace trigger TRG_DW_EWSYSTEM
  2. before insert
  3. on DW_EWSYSTEM  for each row
  4. begin
  5. select SEQ_DW_EWSYSTEM.nextval into :new.id from dual;
  6. end;
    1. <insert id="insertEwsystem" parameterType="Ewsystem">
    2. <selectKey resultType="int" keyProperty="id" order="AFTER">
    3. SELECT SEQ_DW_EWSYSTEM.CURRVAL FROM DUAL
    4. </selectKey>
    5. INSERT INTO EWSYSTEM (ID,ORG_ID,NAME)VALUES(#{id},#{orgId,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR})
    6. </insert>
时间: 2024-08-01 20:24:56

Mybatis 插入操作时获取主键 (Oracle 触发器与SEQ)的相关文章

Mybatis 插入insert操作时获取主键

转载于 http://blog.csdn.net/lklinkang/article/details/6185927 插入操作 对于自增主键的表,插入可以不配置插入的主键列.否则是必须的. 获取主键      插入语句之前配置:主要是针对Sequence主键而言,插入前必须指定一个主键值给要插入的记录.Oracle.DB2亦如此,方法是在插入语句标签<insert....>之前配置上: <insert id="AltName.insert" parameterType

MyBatis在insert插入操作时返回主键ID的配置

转:http://www.cnblogs.com/icerainsoft/p/4648900.html 很多时候,在向数据库插入数据时,需要保留插入数据的id,以便进行后续的update操作或者将id存入其他表作为外键. 但是,在默认情况下,insert操作返回的是一个int值,并且不是表示主键id,而是表示当前SQL语句影响的行数... 接下来,我们看看MyBatis如何在使用MySQL和Oracle做insert插入操作时将返回的id绑定到对象中. MySQL用法: <insert id=&qu

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对应的useGenera

Mybatis 插入数据后返回主键值

Oracle中获取刚刚插入记录的主键值: <insert id="insertSelective" parameterType="com.jxxx.p2pp.model.UUserInfo">     <selectKey resultType="java.math.BigDecimal" order="BEFORE" keyProperty="id">    SELECT U_US

Mybatis在insert操作时返回主键

今天在写项目的时候,遇到一个需求,就是在像数据库插入数据的时候,要保留插入数据的主键,以便后续进行级联时,可以将该主键作为另张表的外键. 但是在正常情况下我们使用插入语句返回的是int型,含义是影响该表数据的条数.但是这时候我们想要的得到的却是主键,这时候就可以对mybatis文件进行配置 如图: 属性详解: parameterType ,入参的全限定类名或类型别名 useGeneratedKeys ,取值范围true|false(默认值), 设置是否使用JDBC的getGenereatedKe

mybatis添加记录时返回主键id

参考:https://www.cnblogs.com/nuccch/p/7687281.html 场景 有些时候我们在添加记录成功后希望能直接获取到该记录的主键id值,而不需要再执行一次查询操作.在使用mybatis作为ORM组件时,可以很方便地达到这个目的.鉴于mybatis目前已经支持xml配置和注解2种方式,所以分别给予详细介绍. 数据表设计: drop table if exists `test`; create table `test` ( `id` bigint(20) NOT NU

mybatis插入操作时,返回自增主键id

mapper.xml 代码 <insert id="insert" parameterType="com.Student" > <selectKey keyProperty="id" resultType="long" order="AFTER"> select last_insert_id(); </selectKey> insert into student(id,,

mybatis中useGeneratedKeys用法--插入数据库后获取主键值

前言:今天无意在mapper文件中看到useGeneratedKeys这个词,好奇就查了下,发现能解决我之前插入有外键表数据时,这个外键获取繁琐的问题,于是学习敲DEMO记录    在项目中经常需要获取到插入数据的主键来保障后续操作,数据库中主键一般我们使用自增或者uuid()的方式自动生成 问题:对于uuid使用Java代码生成的方式还比较容易控制,然而使用数据库生成的主键,这样我们就需要将插入的数据再查询出来得到主键,某些情况下还可能查询到多条情况,这样就比较尴尬了. 那有什么办法来插入数据

Mybatis在insert时返回主键id

需要注意的地方:1.添加记录能够返回主键的关键点在于需要在标签中添加以下三个属性.useGeneratedKeys:必须设置为true,否则无法获取到主键id.keyProperty:设置为POJO对象的主键id属性名称.keyColumn:设置为数据库记录的主键id字段名称2.新添加主键id并不是在执行添加操作时直接返回的,而是在执行添加操作之后将新添加记录的主键id字段设置为POJO对象的主键id属性调用时: roomCheckInfoMapper.insertSelective(roomC