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

文章目录

  • 1、官方文档是这么说的
  • 2、我想到了3种情况,和思考的一个问题
    • 问题:mybatis如何确定哪个字段为主键的?
    • a)插入的数据不带id
    • b)插入的数据带id,且数据库存在
    • c)插入的数据带id,且数据库不存在
  • 3、测试情况(这里我就直接说了)
    • a)插入的数据不带id(插入成功)
    • b)插入的数据带id且数据库存在 (修改成功)
    • c)插入的数据带id,且数据库不存在 (插入成功)
    • d)mybatis-plus找主键的方式

1、官方文档是这么说的

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

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

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

先给大家看我建立的entity
今天来说说mybatis-plus的saveOrUpdate方法(个人笔记)

问题: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)
今天来说说mybatis-plus的saveOrUpdate方法(个人笔记)
控制台打印出来的sql语句
今天来说说mybatis-plus的saveOrUpdate方法(个人笔记)

d)mybatis-plus找主键的方式

  • mybatis-plus本身是不知道,你在数据库建立的主键。它也无法知道
  • 它以不太准确的默认规则寻找主键
  • 第一种情况,你的表存在一个id字段,默认把id字段当作主键
  • 第二种情况,你给表字段增加一个@TableId注解(别用错了,用成了@TableField注解),算是你主动给字段加记号让mybatis-plus知道
  • 优先级:@TableId 比 id 更高
  • 找不到主键命令行会报下面这个语句的错误
    今天来说说mybatis-plus的saveOrUpdate方法(个人笔记)
    参考的博客:mybatis-plus是如何知道哪个是主键字段?

相关文章

暂无评论

暂无评论...