mybatisplus代码生成器怎么把@EqualsAndHashCode(callSuper = false)关掉
时间: 2025-04-06 11:10:34 浏览: 17
### 关于 MyBatis Plus 代码生成器自定义配置
在 MyBatis Plus 中,默认情况下,代码生成器会自动为实体类添加一些常用的注解,比如 `@ToString` 和 `@EqualsAndHashCode`。如果希望禁用这些注解或者调整其行为,可以通过修改代码生成器的模板文件实现。
#### 自定义代码生成器的行为
MyBatis Plus 提供了一个灵活的代码生成工具,允许开发者通过继承 `DefaultFreemarkerTemplateEngine` 或者覆盖默认的 FreeMarker 模板来自定义生成逻辑。具体来说,可以重写模板中的部分逻辑以移除不需要的注解[^1]。
以下是具体的解决方案:
1. **创建自定义模板引擎**
需要扩展 `DefaultFreemarkerTemplateEngine` 并替换默认的模板路径或内容。
2. **修改实体类模板**
默认的实体类模板位于 `templates/entity.java.ftl` 文件中。打开该文件并删除与 `@EqualsAndHashCode` 相关的部分。
3. **设置 CodeGenerator 使用自定义模板**
在初始化 `AutoGenerator` 实例时,将其模板引擎设置为自定义版本。
```java
// 创建自定义模板引擎
public class CustomFreeMakerTemplateEngine extends DefaultFreemarkerTemplateEngine {
@Override
protected Configuration cfg(boolean isMaven) {
Configuration configuration = super.cfg(isMaven);
try {
// 替换 entity 模板为自定义模板
configuration.setClassForTemplateLoading(this.getClass(), "/custom/templates");
} catch (Exception e) {
throw new RuntimeException("加载自定义模板失败", e);
}
return configuration;
}
}
// 设置 AutoGenerator 使用自定义模板引擎
AutoGenerator mpg = new AutoGenerator();
mpg.setTemplateEngine(new CustomFreeMakerTemplateEngine());
```
4. **重新运行代码生成器**
完成上述更改后,再次执行代码生成过程即可生成不带 `@EqualsAndHashCode` 注解的实体类。
#### 注意事项
- 如果仅需简单地禁用某些注解而不涉及复杂定制,则可以直接编辑默认模板文件 `/templates/entity.java.ftl`,手动删除对应的内容[^2]。
- 修改后的模板应保存到项目的资源目录下,并确保路径正确以便被模板引擎识别。
```java
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ExampleEntity {
}
```
以上方法能够有效解决 MyBatis Plus 代码生成器默认添加 `@EqualsAndHashCode` 的问题。
---
阅读全文
相关推荐
















