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