• 关于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. JavaScript 学习之第一篇JavaScript的数据类型(2016/8/29 晚 23:12)

    1. JavaScript的数据类型 JavaScript 里面有6中数据类型 Boolean String Number Undefined Null Object object(对象)类型包含了数 ...

  2. AngularJS初步

    AngularJS特点 遵循AMD规范 不需要操作节点 对于jquery,一般是利用现有完整的DOM,然后在这戏Dom的基础上进行二次调教了:而对于AngularJS等框架则是根据数据模型以及其对应用 ...

  3. UIActivityIndicatorView活动控制器的大小改变

    self.activityView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicat ...

  4. c#读写cookie

    读 response.SetCokie(new HttpCookie("Color",TextBox1.Text);写 request.Cookies["color&qu ...

  5. FineUI布局应用(二)

    一.FineUI页面布局分为 1.Fit布局 <f:Panel ID="Panel1" Title="布局Fit(Layout=Fit)" runat=& ...

  6. 此项目的默认Web访问模式设置为文件共享, 但是无法从路径(此为转贴)

    故障现象: 当你打开ASP.NET Web项目时,如果出现这样的错误提示:提示窗口标题: Web访问失败提示内容: 此项目的默认Web访问模式设置为文件共享, 但是无法从路径“...”打开“...”处 ...

  7. Java如何获取当前的jar包路径以及如何读取jar包中的资源

    写作业的时候要输出一个record.dat文件到jar包的同级目录,但是不知道怎么定位jar包的路径.百度到的方法不很靠谱,所以在这里记录一下. 一:使用类路径 String path = this. ...

  8. myeclipse 不能添加非myeclipse开发的项目

    这是因为以前的项目不是用myEclipse创建的,所以用myeclipse deploy的时候找不到你的项目.可以这样做:右击原项目名 - myeclipse - Add Web Project Ca ...

  9. POJ2446 二分图最大匹配

    问题:POJ2446 分析: 采用黑白相间的方法把棋盘分成两个点集,是否可以用1*2的卡片实现全覆盖等价于二分图是否有完全匹配. AC代码 //Memory: 172K Time: 32MS #inc ...

  10. POJ3041 二分图最大匹配

    问题:POJ3041 分析: 构造二分图:令A = B = { 1, 2, ... , n }, 分别代表行号集与列号集.假如第i行第j列有一颗行星,则连接Ai与Bj, 表示必须从Ai(即第i行),B ...