mybatisplus字段和数据库名不一样(mybatis字段类型)
## MyBatis-Plus 字段名与数据库列名不一致的解决方案### 简介在使用 MyBatis-Plus 进行数据库操作时,我们经常会遇到实体类字段名与数据库表列名不一致的情况。例如,Java 实体类中通常使用驼峰命名法,而数据库列名可能使用下划线命名法。为了解决这个问题,MyBatis-Plus 提供了多种灵活的解决方案,方便开发者进行映射配置。### 一、使用 @TableField 注解#### 1.1 简介`@TableField` 注解是 MyBatis-Plus 提供的最常用的映射方式,可以作用于实体类字段上,用于指定数据库表中对应的列名。#### 1.2 使用方法```java import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName;@TableName("user") // 指定数据库表名 public class User {@TableId("user_id") // 指定主键列名private Long userId;@TableField("user_name") // 指定数据库列名private String userName;// ... } ```#### 1.3 说明
`@TableName` 注解用于指定实体类对应的数据库表名,如果实体类名与数据库表名一致,可以省略该注解。
`@TableField` 注解的 `value` 属性用于指定数据库列名。### 二、全局配置数据库列名转换规则#### 2.1 简介如果项目中大量存在字段名与数据库列名不一致的情况,可以使用全局配置的方式统一设置数据库列名转换规则,避免重复编写 `@TableField` 注解。#### 2.2 使用方法1. 实现 `com.baomidou.mybatisplus.core.handlers.MetaObjectHandler` 接口,重写 `insertFill` 和 `updateFill` 方法,设置全局自动填充规则。 2. 在 `application.yml` 配置文件中配置 `mybatis-plus.global-config.db-config.table-underline` 属性,启用数据库列名下划线命名。```java # application.yml mybatis-plus:global-config:db-config:table-underline: true # 启用数据库列名下划线命名 ```#### 2.3 说明
启用 `table-underline` 配置后,MyBatis-Plus 会自动将驼峰命名的字段名转换为下划线命名的数据库列名。### 三、自定义全局配置#### 3.1 简介除了使用 MyBatis-Plus 提供的默认配置外,我们还可以自定义全局配置,实现更灵活的映射规则。#### 3.2 使用方法1. 创建自定义的 `com.baomidou.mybatisplus.core.config.GlobalConfig` 类,并重写 `dbConfig` 属性的 `columnUnderline` 方法。 2. 在 Spring Boot 项目中,将自定义的 `GlobalConfig` 类注入到 Spring 容器中。```java @Configuration public class MybatisPlusConfig {@Beanpublic GlobalConfig globalConfig() {GlobalConfig globalConfig = new GlobalConfig();// 自定义数据库列名转换规则globalConfig.setDbConfig(new GlobalConfig.DbConfig().setColumnUnderline(field -> {// 自定义转换逻辑// ...}));return globalConfig;} } ```#### 3.3 说明
自定义全局配置可以实现更复杂的映射规则,例如根据不同的数据库类型进行不同的转换。### 总结MyBatis-Plus 提供了多种灵活的解决方案来处理字段名与数据库列名不一致的情况,开发者可以根据实际情况选择合适的方案。
本文系作者授权tatn.cn发表,未经许可,不得转载。