LZ做练手设计的时候有这样一个订单需求,先插入订单表数据(t_order),再写入订单详情表(t_orderDetail),详情表需要有一个与t_order的外键约束
t_order (
oid auto_increment primary key
)
t_orderDetail (
oid 外键约束需要t_order存在这个oid
)
因为t_orderDetail的oid是自增的,所以需要先插入t_order再给t_orderDetail添加oid的数据。
直接查表,选择最新的数据也行,但在高并发场景下会不会有错误呢?而且又要去数据库手动select一次数据
LZ通过查找资料和解决方案,找到如下解决方案,让MP,MYSQL执行后返回主键给我:
第一步:MyBatis-Plus的xml配置文件里面使用 "useGeneratedKeys" 和 "keyProperty" 配置,如下
第二步: 直接执行这个方法,
错误的方式:LZ一开始也以为直接返回值就是所需要的oid主键,但测试的时候发现数据库自增多少返回值都是 1,那不就还是受影响的行数了嘛
正确的方式:应该是 千万不能想当然地以为这句SQL返回值就是oid,而应该从传入的order对象中通过getter()来获取
控制台打印后果然是LZ所需要的数据,轻松秒杀。
标签:orderDetail,oid,order,Plus,值后,LZ,主键 From: https://www.cnblogs.com/CoderRadeon/p/16667205.html