• 关于Sequence主键的数据库来说,如:

    • <insert id="add" parameterType="vo.Category">

      <selectKey resultType="java.lang.Short" order="BEFORE" keyProperty="id">

      SELECT SEQ_TEST.NEXTVAL FROM DUAL

      </selectKey>

      insert into category (name_zh, parent_id,

      show_order, delete_status, description

      )

      values (#{nameZh,jdbcType=VARCHAR},

      #{parentId,jdbcType=SMALLINT},

      #{showOrder,jdbcType=SMALLINT},

      #{deleteStatus,jdbcType=BIT},

      #{description,jdbcType=VARCHAR}

      )

      </insert>

  • 自增主键的表,插入时不需要主键,而是在插入过程中获取一个自增的主键,如:
    • <insert id="add" parameterType="vo.Category" useGeneratedKeys="true" keyProperty="id">

      insert into category (name_zh, parent_id,

      show_order, delete_status, description

      )

      values (#{nameZh,jdbcType=VARCHAR},

      #{parentId,jdbcType=SMALLINT},

      #{showOrder,jdbcType=SMALLINT},

      #{deleteStatus,jdbcType=BIT},

      #{description,jdbcType=VARCHAR}

      )

      </insert>

      或者

      <insert id="add" parameterType="vo.Category">

      <selectKey resultType="java.lang.Short" order="AFTER" keyProperty="id">

      SELECT LAST_INSERT_ID() AS id

      </selectKey>

      insert into category (name_zh, parent_id,

      show_order, delete_status, description

      )

      values (#{nameZh,jdbcType=VARCHAR},

      #{parentId,jdbcType=SMALLINT},

      #{showOrder,jdbcType=SMALLINT},

      #{deleteStatus,jdbcType=BIT},

      #{description,jdbcType=VARCHAR}

      )

      </insert>    注意:keyProperty="id" 这个id必须是实体的id,而不是数据表的主键id,否则,得不到正确的返回结果;接收返回值的时候必须用实体的get属性,而不能定义变量,否则,接收不到正确的返回结果:即必须用user.getId()来接收。例如int insertAndGetId = pgyMemUserService.insertAndGetId(user);

      System.out.println(user.getId());

  • 数据库表的主键不是自增的类型,一般需要应用层通过代码生成主键。也可以在数据库中生成如下:
    •   下面是针对Oracle的写法,Oracle没有autoincrement,而是用触发器实现的 CURRVAL是在触发器中定义的.
      <insert id="insert" parameterClass="ProFeeKindObject">
            <![CDATA[
               INSERT INTO t_pro_feeKind (KINDID,kindName,kindType,enable)
               VALUES (seq_t_pro_feekind_id.nextval,#kindName#,#kindType#,#enable#)
              ]]>
              <selectKey resultClass="java.lang.Integer" keyProperty="kindId" >
              SELECT seq_t_pro_feekind_id.CURRVAL AS kindId FROM DUAL
              </selectKey>    
      </insert>

      <!-- 下面是针对MySQL的写法 -->
      <!--
         <selectKey resultClass="int" keyProperty="id" >
         SELECT @@IDENTITY AS id
         </selectKey>
      -->

关于mybatis插入数据库返回主键id的更多相关文章

  1. Java MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  2. Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了

    insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xi ...

  3. MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  4. mybatis插入是返回主键id

    <!-- 插入数据:返回记录的id值 --> <insert id="insertOneTest" parameterType="org.chench. ...

  5. mybatis插入数据库 返回主键

    传递参数为对象TaskEntity, 返回主键结果为Integer 与 主键 task_id 的类型一致即可 <insert id="addTask" parameterTy ...

  6. Mybatis插入数据返回主键ID

    <insert id="add" parameterType="com.dsa.core.base.model.ProductSync">      ...

  7. mybatis与mysql插入时返回主键id的值

    <insert id="insertCharge" parameterType="com.bb.bean.Rechargerecord"> < ...

  8. 使用mybatis插入自增主键ID的数据后返回自增的ID

    在开发中碰到用户注册的功能需要用到用户ID,但是用户ID是数据库自增生成的,这种情况上网查询后使用下面的方式配置mybatis的insert语句可以解决: <insert id="in ...

  9. MyBatis框架——mybatis插入数据返回主键(mysql、oracle)

    向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是 ...

随机推荐

  1. NSString属性什么时候用copy,什么时候用strong?【转】

    转自:http://www.cocoachina.com/ios/20150512/11805.html. 我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境): ...

  2. memcached session共享

    http://www.baidu.com/s?wd=memcached%20session%E5%85%B1%E4%BA%AB&rsv_spt=1&issp=1&f=8& ...

  3. Android应用中使用Popupmenu

    最终效果: 页面布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...

  4. Asp.net mvc4 + HighCharts + 曲线图

    前端代码: @{ Layout = null;}<!DOCTYPE html><html><head> <title></title> &l ...

  5. FileUpload

    一upload原理: 1.表单的method必须是post方法 2.enctype属性必须是“mutipatr/form-data”类型 enctype默认的属性是“application/x-www ...

  6. BZOJ 3277 串 (广义后缀自动机)

    3277: 串 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 309 Solved: 118 [Submit][Status][Discuss] De ...

  7. Oracle11g R2学习系列 之七安全性

    其实,对于目前我使用的Oracle的水平来看,还达不到使用安全管理的高度,只是作为一个学习来看一下. 关于Oracle的安全管理,一般使用OEM来操作完成好了,入口是:OEM的“服务器”属性页中,选择 ...

  8. $.unique() 对象组成的数组去掉重复对象

    发现一件事,一个完全由对象组成的数组,用$.unique()方法去掉重复的时候不管用 var arr = [{text:'第一个',value:'1'},{text:'第二个',value:'2'}, ...

  9. dedecms likearticle 调用附加表的字段调用方式

    [field:id runphp='yes'] $aid = @me; $row = $GLOBALS['dsql']->GetOne("Select 字段名 From `dede_a ...

  10. windows下使用php重命名目录下的文件

    rename函数一直报错,最后发现是windows下文件名的编码问题,如果项目文件是utf-8的话,一定要经过一步转码 $dir = $path . '/../resource/logo'; $han ...