Mybatis之SelectKey

一、背景:
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。

在这里插入图片描述

二、应用场景
使用SELECT LAST_INSERT_ID() 这个sql语句来获取插入记录后返回的自增id

<insert id="insert" parameterClass="UserDO">
INSERT INTO user( user_id,user_nick,tel_phone,address,status, user_type,remark)
VALUES ( #userId#, #userNick#, #telPhone#, #address#, #status#,
#userType#, #remark#)
<selectKey keyProperty="id" resultClass="java.lang.Long">
SELECT LAST_INSERT_ID() AS value
</selectKey>
</insert>
其中user表的主键是自增的id.

三、存在的问题
3.1

<selectKey keyProperty="id" resultClass="java.lang.Long">
SELECT LAST_INSERT_ID() AS value
</selectKey>

在高并发多个数据表都有写入的情况,下,这个语句返回的就有可能是另外一张表刚刚写入的记录id,这样根据这个id去查询就返回没有这个记录了。
3.2 解决方案:用这个user表的唯一索引user_id去重新查一次user表来获取这个id,这种重新去查的方法基本可以满足大部分场景需求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值