但这个操作并没有起效
时间: 2023-07-11 21:20:53 浏览: 75
如果使用`@TableField`注解指定了数据库表中对应的列名,但并没有起到效果,可能有以下几种原因:
1. 实体类对应的数据库表没有同步更新:如果在实体类中更改了字段名,但没有在数据库表中更新对应的列名,那么Mybatis-plus生成的SQL语句中就仍然会使用旧的列名。
2. Mybatis-plus的全局配置没有开启自动驼峰命名规则:如果没有开启自动驼峰命名规则,那么在生成SQL语句时就不会将属性名转换为下划线命名规则的列名。可以在Mybatis-plus的全局配置中开启自动驼峰命名规则,示例如下:
```java
@Configuration
@MapperScan("com.example.mapper")
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页插件等其他插件
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> {
// 设置为自动驼峰命名规则
configuration.setObjectWrapperFactory(new MybatisMapWrapperFactory());
};
}
}
```
3. 实体类的属性名和数据库表中的列名不匹配:如果实体类的属性名和数据库表中的列名不匹配,那么Mybatis-plus就无法将实体类的属性名转换为正确的列名。在这种情况下,可以使用`@TableId`和`@TableField`注解的`value`属性显式指定属性名与列名的对应关系。
综上所述,如果`@TableField`注解没有起到效果,可以检查以上几个方面是否存在问题,找出原因后进行相应的调整。
阅读全文