如何使用mysql的SELETE LAST_INSERT_ID()获取刚刚插入的自增长的id?

互联网项目开发中,mysql的使用居多。而且,DBA也推荐使用数据库表自增长id作为主键,这种方式简单,性能好。但我们插入完实体后,往往需要知道刚插入的数据id,以便作为唯一标识生成或更新到实体中。

通常的做法,可能是再发行另外一个SQL,大概是通过更新时间,或者一个刚刚辅助登录完的uuid反查,更或者是select max(id)(有并发问题),这几种方式都不是特别理想,增加了一定的代码复杂度。

下面两篇帖子,一个是验证SELETE LAST_INSERT_ID()的正确性的,一个是基于常用的mybatis框架,如何在insert的同时让其返回刚插入的id。特在此记录下。

http://blog.sina.com.cn/s/blog_5b5460eb0100nwvo.html

https://blog.csdn.net/czd3355/article/details/71302441

 

但在《领域驱动设计实践》这本书中,P166,作者也说明了,作为实体,应该同时具备领域标识和委派标识。

领域标识:通常在程序中通过UUID等方式生成的32/64位字符串,是实体的唯一标识。

委派标识:就是上面介绍的对应数据库自增长的id

我觉得,领域标识用于在领域服务内,标识这个实体;而委派标识,通常用于在数据库中做关联查询、表表引用时使用。因为只是int,会提高索引查询效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值