记录一下因mybatis-plus版本不一致导致的实体主键id未赋值,新增失败问题
记录一下因mybatis-plus版本不一致导致的实体主键id未赋值,新增失败问题
mybatis-plus中对于id的赋值在
package com.baomidou.mybatisplus.core;
public class MybatisParameterHandler implements ParameterHandler {} 中实现
1)3.4.1版本中的实现如下,处理 IdType.ASSIGN_ID 和 IdType.ASSIGN_UUID
2)3.2.0版本中的实现如下,
package com.baomidou.mybatisplus.core;
public class MybatisDefaultParameterHandler extends DefaultParameterHandler {}
问题出现场景:位于公司后台管理系统中(项目依赖非本人搭建),因同事平时设置的数据库主键自增,id采用int类型,type=IdType.AUTO,所以未出现此问题
@ApiModelProperty("主键ID") @TableId(type = IdType.ASSIGN_ID) private Long id;
@TableId是mybatis-plus-annotation依赖中的注解,项目中使用的是3.4.0版本;说明(3.2.0的版本是没有用IdType.ASSIGN_ID的)
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-annotation</artifactId> <version>3.4.0</version> </dependency>
而mybatis-plus使用的是3.2.0的版本
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency>
从3.2.0的MybatisDefaultParameterHandler 方法来看,是没有对type = IdType.ASSIGN_ID的处理,所以id没有被赋值。
我将依赖都修改成3.4.0,问题解决
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤