在spring+ibatis中使用LAST_INSERT_ID()是否安全?

still_waiting still_waiting 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
项目数据库要从oracle转为mysql。

为了获取插入数据的id,oracle中有sequence ,对mysql不是很熟悉,google得知一般都用自增字段去实现。

ibatis中这样写的:


<insert id="insertIssue" parameterClass="Issue">
insert into issue (name,issue_user,status)
values (#name#,#issueUser#,#status#)
<selectKey resultClass="int" keyProperty="id">
SELECT LAST_INSERT_ID() AS ID
</selectKey>
</insert>


关于LAST_INSERT_ID() 看到文档提到是:

“产生的ID 每次连接后保存在服务器中。这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMENT值的。这个值不能被其它客户端影响,即使它们产生它们自己的 AUTO_INCREMENT值。这个行为保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁或处理。”

请问大家这种方法在高并发状态下是否安全?

或者有没有其他好的方式模拟sequence ?

非常感谢!
...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
still_waiting
Java EE 67,535 成员 225,843 内容