博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis中获取新添加记录的主键id且不受并发影响的方法
阅读量:4093 次
发布时间:2019-05-25

本文共 744 字,大约阅读时间需要 2 分钟。

需求场景

向主键 自增 的数据库表中插入一条新记录,需要立即获取最新插入记录的id信息,用于后续处理

解决办法

  1. 使用 select max(id) from tablename
    缺点: 需要考虑并发的情况
    举例: a向数据库表C插入一条记录,b向数据库表C插入另一条记录,且b执行插入操作是在a获取最新插入记录的id操作之前。因此,a使用select max(id) from tablename方法获取的id实际上是b插入的最新记录的id
  2. 使用LAST_INSERT_ID
    优点: 解决了并发问题,因为LAST_INSERT_ID是线程安全的
    举例:
insert into tb_parameter_copy (name, identifier, data_type, remark, mock_data, must, packageName, source, defaultVal) values (#{name}, #{identifier}, #{dataType}, #{remark}, #{mockData}, #{must}, #{packageName}, #{source}, #{defaultVal})
select LAST_INSERT_ID()

其中:parameterType的参数类型可改成java.util.Map

int numberOfAffectedRows = parameterService.insertOfReturnId(parameter);

返回值numberOfAffectedRows表示受影响的行数,若要获取自增主键的id值可通过parameter.getId()得到

转载地址:http://hhtii.baihongyu.com/

你可能感兴趣的文章
express的应用
查看>>
NodeJS开发指南——mongoDB、Session
查看>>
Express: Can’t set headers after they are sent.
查看>>
2017年,这一次我们不聊技术
查看>>
实现接口创建线程
查看>>
Java对象序列化与反序列化(1)
查看>>
HTML5的表单验证实例
查看>>
JavaScript入门笔记:全选功能的实现
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>
数据库事务
查看>>
JavaScript基础1:JavaScript 错误 - Throw、Try 和 Catch
查看>>
SQL基础总结——20150730
查看>>
SQL join
查看>>
JavaScript实现页面无刷新让时间走动
查看>>
CSS实例:Tab选项卡效果
查看>>
前端设计之特效表单
查看>>
前端设计之CSS布局:上中下三栏自适应高度CSS布局
查看>>
Java的时间操作玩法实例若干
查看>>
JavaScript:时间日期格式验证大全
查看>>
pinyin4j:拼音与汉字的转换实例
查看>>