mybatis-plus不生效
时间: 2025-01-31 14:55:29 浏览: 76
### MyBatis-Plus 主键填充不生效的原因分析
在使用 MyBatis-Plus 进行数据库操作时,如果遇到 `Long` 类型主键自动生成失效的情况,通常是因为配置不当或某些细节处理不到位所致。
#### 配置文件设置不合理
当实体类中的字段被标记为主键并期望其自动填充时,需确认应用全局配置是否正确设置了 ID 生成策略。例如,在 Spring Boot 应用程序中,应在 application.yml 或者 application.properties 文件里指定合适的 idType 参数[^1]:
```yaml
mybatis-plus:
global-config:
db-config:
id-type: auto
```
上述配置确保了框架能够识别到表结构支持的自增特性,并据此执行相应的 SQL 操作来获取新记录的唯一标识符。
#### 实体属性定义缺失
另一个常见问题是实体对象本身缺少必要的注解声明。对于需要由系统负责分配值的关键字列(如主键),应该利用 @TableId 注释指明该成员变量的角色及其对应的逻辑行为模式。具体来说就是为 long/Long 类型的数据成员加上如下所示的修饰语句:
```java
@TableId(type = IdType.AUTO)
private Long id;
```
此段代码明确了 `id` 字段作为数据表内的主键存在,并且采用数据库层面提供的增量机制来自动生成新的编号序列。
#### 插入方法调用异常
除了以上两点外,还需注意业务层面上的操作流程设计是否存在漏洞。比如向持久化存储写入新纪录之前忘记初始化那些标注有特定填充规则(即 insert/update 时间戳等)却未赋予初识值得非主键部分,则可能导致整个事务失败进而影响到后续环节的结果判定。因此建议开发者们仔细审查自己的 DAO 层接口以及 Service 组件内部实现逻辑,排查是否有遗漏之处[^2]。
```java
// 正确做法是在保存前先设定好这些辅助性的元数据信息
entity.setCreateTime(new Date());
entity.setUpdateTime(new Date());
baseMapper.insert(entity);
```
综上所述,针对 MyBatis-Plus 中 `Long` 型主键无法正常工作的问题,可以从调整项目级参数、完善模型描述方式以及优化服务端编程实践这三个方面入手加以改进和完善。
阅读全文
相关推荐


















