Mybatis中插入数据后返回自增ID值

本文介绍了在Mybatis中如何在Oracle、MySQL和PostgreSQL数据库中插入数据后返回自增ID的方法,包括直接在SQL中获取和使用selectKey标签的方式。并提供了一个通用版的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.oracle插入数据后返回自增id的方法

执行完insert后,主键值包装在了参数对象里边,通过ArticleInfo.getArticleInfoId()获取:

<insert id="insert" parameterType="top.zdigi.entity.ArticleInfo">

    <selectKey keyProperty="articleInfoId" resultType="java.lang.Integer" order="BEFORE">
      select public.article_info_id_seq.nextval from dual
    </selectKey>

    insert into ARTICLE_INFO (ARTICLE_INFO_ID, TITLE, SUMMARY, 
      IS_TOP, PAGE_VIEW, CREATE_BY
      )
    values (#{articleInfoId,jdbcType=DECIMAL}, #{title,jdbcType=VARCHAR}, #{summary,jdbcType=VARCHAR}, 
      #{isTop,jdbcType=DECIMAL}, #{pageView,jdbcType=DECIMAL}, #{createBy,jdbcType=TIMESTAMP}
      )
  </insert>

2.MySQL 插入数据后返回自增id的方法

1、insert按如下修改,主键值包装在了参数对象里边,通过ArticleInfo.getArticleInfoId()获取:

<insert id="insert" parameterType="top.zdigi.entity.ArticleInfo" keyProperty="articleInfoId" useGeneratedKeys="true">

    insert into ARTICLE_INFO ( TITLE, SUMMARY, 
      IS_TOP, PAGE_VIEW, CREATE_BY
      )
    values (#{title,jdbcType=VARCHAR}, #{summary,jdbcType=VARCHAR}, 
      #{isTop,jdbcType=DECIMAL}, #{pageView,jdbcType=DECIMAL}, #{createBy,jdbcType=TIMESTAMP}
      )
  </insert>

 2、插入selectKey标签,获取同上

<insert id="insert" parameterType="top.zdigi.entity.ArticleInfo">

    <selectKey keyProperty="articleInfoId" resultType="java.lang.Integer" order="AFTER">
       select LAST_INSERT_ID()
    </selectKey>
   
    insert into ARTICLE_INFO (ARTICLE_INFO_ID, TITLE, SUMMARY, 
      IS_TOP, PAGE_VIEW, CREATE_BY
      )
    values (#{articleInfoId,jdbcType=DECIMAL}, #{title,jdbcType=VARCHAR}, #{summary,jdbcType=VARCHAR}, 
      #{isTop,jdbcType=DECIMAL}, #{pageView,jdbcType=DECIMAL}, #{createBy,jdbcType=TIMESTAMP}
      )
  </insert>

 3.postgresql插入数据后返回自增id的方法

  执行后,通过结果集中的ARTICLE_INFO_ID获取:

<select id="insert" parameterType="top.zdigi.entity.ArticleInfo" resultType="java.lang.Integer">
   
    insert into ARTICLE_INFO (ARTICLE_INFO_ID, TITLE, SUMMARY, 
      IS_TOP, PAGE_VIEW, CREATE_BY
      )
    values (nextval('public.article_info_id_seq'), #{title,jdbcType=VARCHAR}, #{summary,jdbcType=VARCHAR}, 
      #{isTop,jdbcType=DECIMAL}, #{pageView,jdbcType=DECIMAL}, #{createBy,jdbcType=TIMESTAMP}
      )  returning ARTICLE_INFO_ID;
  </select>

 4.oracle和postgresql插入数据后返回自增id的方法 (通用版)

(小技巧:使用mybatis generate tool 插件时,填写主键,insert语句会自动生成主键配置)

<insert id="insert" parameterType="top.zdigi.entity.ArticleInfo" keyColumn="article_info_id" keyProperty="articleInfoId" useGeneratedKeys="true">

    insert into ARTICLE_INFO ( article_info_id,TITLE, SUMMARY, 
      IS_TOP, PAGE_VIEW, CREATE_BY
      )
    values (#{articleInfoId,jdbcType=DECIMAL},#{title,jdbcType=VARCHAR}, #{summary,jdbcType=VARCHAR}, 
      #{isTop,jdbcType=DECIMAL}, #{pageView,jdbcType=DECIMAL}, #{createBy,jdbcType=TIMESTAMP}
      )
  </insert>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值