今天来说说mybatis-plus的saveOrUpdate方法(个人笔记)

1、官方文档是这么说的

你传入一个entity,这个时候entity会有一个主键,这个时候它先通过主键去查询记录是否存在,如果记录存在则选择修改,如果记录不存在则选择增加。但是我实际测试的好像和官方的说明不符hhh

在这里插入图片描述
在这里插入图片描述

2、我想到了3种情况,和思考的一个问题

先给大家看我建立的entity
在这里插入图片描述

问题:mybatis如何确定哪个字段为主键的?

可能存在的情况有

a)插入的数据不带id

b)插入的数据带id,且数据库存在

c)插入的数据带id,且数据库不存在

3、测试情况(这里我就直接说了)

a)插入的数据不带id(插入成功)

(插入成功,而且mybatis-plus自动帮你生成一个id{1498495250845941762},19位),策略为:mybatis-plus默认使用的主键生成的策略是IdType.ID_WORKER,根据类型随机产生一个全局唯一的ID

b)插入的数据带id且数据库存在 (修改成功)

c)插入的数据带id,且数据库不存在 (插入成功)

给大家看看第一种情况的截图(不带id)
在这里插入图片描述
控制台打印出来的sql语句
在这里插入图片描述

d)mybatis-plus找主键的方式

  • mybatis-plus本身是不知道,你在数据库建立的主键。它也无法知道
  • 它以不太准确的默认规则寻找主键
  • 第一种情况,你的表存在一个id字段,默认把id字段当作主键
  • 第二种情况,你给表字段增加一个@TableId注解(别用错了,用成了@TableField注解),算是你主动给字段加记号让mybatis-plus知道
  • 优先级:@TableId 比 id 更高
  • 找不到主键命令行会报下面这个语句的错误
    在这里插入图片描述
    参考的博客:mybatis-plus是如何知道哪个是主键字段?
  • 17
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 41
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值