数据库字段名和实体类相同,mybatis-plus却查询不同的字段名

本文讲述了在使用Springbot与MyBatis-Plus集成时,遇到实体类字段查询问题,通过添加@TableField注解解决的过程,重点在于如何处理ORM映射的困惑。

Springbot整合mybatis-plus的时候,我的数据库是这样的

这是写的实体类

但是运行的结果总是显示查询的是role_name

???迷惑

最后的解决方法是加了@TableFiled注解

 

运行成功

 

 

MyBatis-Plus 实现数据库字段实体类的自动映射主要依赖于其内置的字段匹配策略注解支持。默认情况下,MyBatis-Plus 采用驼峰命名规则将数据库中的下划线命名字段自动转换为实体类中的驼峰命名字段。例如,数据库字段 `user_name` 会被自动映射到实体类的 `userName` 字段上[^4]。 如果数据库字段实体类字段名称完全一致,则 MyBatis-Plus 会直接进行映射,无需额外配置。这种策略适用于大多数标准命名规范下的数据库设计,简化了字段映射过程[^1]。 在字段命名不一致或存在特殊映射需求的情况下,可以通过 `@TableField` 注解显式指定字段映射关系。例如: ```java import com.baomidou.mybatisplus.annotation.*; @Data @TableName("user_table") public class User { @TableId(type = IdType.AUTO) private Long id; @TableField("user_name") // 显式指定数据库字段名 private String name; @TableField("user_age") private Integer age; @TableField("email_address") private String email; } ``` 在某些场景下,若数据库字段命名不符合驼峰命名规则,或者希望关闭自动驼峰命名映射,可以在配置文件中禁用自动映射功能。例如,在 `application.yml` 中添加如下配置: ```yaml mybatis-plus: configuration: mapUnderscoreToCamelCase: false ``` 此配置将影响整个项目中字段的映射行为,因此在使用时需谨慎考虑其对已有代码的影响[^4]。 对于枚举类型的字段MyBatis-Plus 也提供了自动映射的支持。通过 `@EnumValue` 注解可以实现枚举值数据库字段的绑定。例如: ```java import com.baomidou.mybatisplus.annotation.*; import lombok.Data; @Data @TableName("user") public class User { private String name; @EnumValue private AgeEnum age; @EnumValue private GradeEnum grade; } ``` 上述机制确保了数据库字段实体类之间的灵活映射,同时保持了开发效率代码的可维护性。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值