mysql数据库使用mybatis新增操作返回自增主键的值


在使用mysql数据库做一些新增数据业务时,比如说一张表有个自增主键id,在新增一条数据后想要返回新增的这条数据的id值用于后续业务使用,在使用mybatis做持久化管理,xml中可以使用如下方式:

<insert id="insertClientLog" parameterType="TClientLog">
    <selectKey keyProperty="serialNo" order="AFTER" resultType="integer">
      select LAST_INSERT_ID()
    </selectKey>
    insert into pub_tclientlogfile(
      operate_date,
      operate_time,
      remark,
      del_status
    ) values (
      #{operateDate},
      #{operateTime}
      #{remark},
      #{delStatus}
    )
</insert>

 说明:

  使用mysql的LAST_INSERT_ID()方法获取插入记录的主键,设置在插入数据后,即order属性设置为after,使用select LAST_INSERT_ID()查询并返回新插入数据的主键值。

  keyProperty:将查询到的主键值设置到对应实体类的主键属性字段。

  order:<selectKey> 标签内的sql语句相对于insert语句的执行顺序配置,可以为BEFORE、AFTER,AFTER表示select LAST_INSERT_ID()这个语句将在insert语句之后执行。 

或者使用如下方式:

<insert id="insertClientLog" useGeneratedKeys="true" keyProperty="serialNo" parameterType="TClientLog">
    insert into pub_tclientlogfile(
      operate_date,
      operate_time,
      remark,
      del_status
    ) values (
      #{operateDate},
      #{operateTime}
      #{remark},
      #{delStatus}
    )
</insert>

 说明:  

  useGeneratedKeys:设置是否使用jdbc的getGenereatedKeys方法获取主键并赋值到keyProperty设置的属性。

  keyProperty:将查询到的主键值设置到对应实体类的主键属性字段。

对应mapper方法:

void insertClientLog(TClientLog clientLog);

使用时使用入参的getXxx方法来获取对应的结果值:

 //调用插入方法
clientLogMapper.insertClientLog(clientLog);
//使用入参的getXxx方法返回结果值
System.out.println("serialNo:" + clientLog.getSerialNo());

结果如下图所示:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM