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

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

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

1、官方文档是这么说的

你传入一个entity,这个时候entity会有一个主键,这个时候它先通过主键去查询记录时候存在,如果记录存在则选择修改,如果记录不存在则选择增加。

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是如何知道哪个是主键字段?

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/991303.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存