• 关于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. jQuery 文字截取

    HTML <div class="summary">    <p class="news">业内知道,当赵科林“过档”联想之初,恰逢联想 ...

  2. DOM 节点属性

    DOM 节点属性 在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeT ...

  3. ECSHOP_百度收录网址后面有?from=rss

    ecshop的feed.xml文件中间添加了?from=rss,百度蜘蛛抓取收录后,会出现frome页面,导致商品列表重复抓取,访问出错. 修改方法简单: 在根目录下的feed.php找到(八处), ...

  4. 挖掘机控制器与复制其MCU程序

    最近的时间都浪费在两台小松PW128UU-1上面.旧的一台拆了变速箱,装上去以后就变得换挡不行了.新的一台一直都不行,弄过液压泵以后下部分的行走又出现一时正常一时不动的情况. 先说说概况:PW128U ...

  5. qt之窗口换肤(一个qss的坑:当类属性发现变化时需要重置qss,使用rcc资源文件)

    1.相关文章 Qt 资源系统qt的moc,uic,rcc命令的使用 2.概要    毕业两年了,一直使用的是qt界面库来开发程序,使用过vs08.10.13等开发工具,并安装了qt的插件,最近在做客户 ...

  6. 《Programming WPF》翻译 第8章 5.创建动画过程

    原文:<Programming WPF>翻译 第8章 5.创建动画过程 所有在这章使用xaml举例说明的技术,都可以在代码中使用,正如你希望的.可是,代码可以使用动画在某种程度上不可能在x ...

  7. VS2008资源问题解决方法

    错误提示:C:/Program Files/Microsoft SDKs/Windows/v6.0A// Include/PrSht.h(0) error RC2247 : SYMBOL name t ...

  8. Navicat_Preminum

    一. 安装 参考http://blog.csdn.net/longyuhome/article/details/79206041. 软件准备• [OYKSOFT.COM]navicat11.0.8_p ...

  9. 关闭ssh密码登录

    我们经常使用SSH登录管理服务器,在享受便利的同时也会遇到一些安全隐患,最常见的就是SSH密码被暴力破解.如果我们将SSH密码设置的过于复杂,又不容易记,因此限制SSH登录方式,只能使用key登录是一 ...

  10. Lucene.net常见功能实现知识汇总

    在开发SearchEasy Site SearchEngine(搜易站内搜索引擎)的时候,经常会遇到一些搜索引擎的常见功能如何实现的问题,比如实现相关度百分比显示?如何实现在结果中搜索等等诸如此类常见 ...