当前使用版本(必须填写清楚,否则不予处理)

3.2.0

该问题是怎么引起的?(最新版上已修复的会直接close掉)

sql: INSERT INTO ( NAME, age ) VALUES ( 'zhangsan', 12 ) ON DUPLICATE KEY UPDATE NAME = VALUES( NAME ), age = VALUES( age ) 在自定义sql,使用唯一索引更细或插入时,无法获取到主键问题,而且与直接使用mybatis时区别如下: * 直接使用mybatis,不存在数据会插入,存在会更新,都能返回主键id * 使用mybatis-plus在无数据新增时能获取到主键,但是更新时无法获取到主键

重现步骤

报错信息

Comment From: miemieYaho

给出你的复现demo

Comment From: qintao0203

给出你的复现demo

数据库表

CREATE TABLE `user` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL COMMENT '名字',
  `age` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

复现sql

INSERT INTO ( NAME, age )
VALUES
( 'zhangsan', 12 )
ON DUPLICATE KEY UPDATE
NAME = VALUES( NAME ),
age = VALUES( age )

复现步骤

步骤一:使用mybatis,不存在数据会插入,存在会更新,都能返回自增主键id值 步骤二:使用mybatis-plus不存在数据新增时能获取到自增主键id值,但是更新时无法获取到主键id值

Comment From: miemieYaho

git形式的demo

Comment From: qintao0203

mysql如果字段都不更新是不会有结果的,找到原因了,麻烦了