mybatis-plus和mybatis实体名和数据库字段映射问题

概述

在mybatis-plus中,数据库字段为first_char,而实体类中为firstChar,不用在mapper中配置ResultMap,也能自动映射,不过记得加上get和set方法,或者使用@Data注解进行配置

demo

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

看到了嘛?

在mapper中,没有配置ResultMap,数据库字段中两个英文间的下划线在实体中使用小驼峰式命名规则(firstName, camelCase)进行了代替,然后完成注入。使用和数据库一样的命名是无法注入的。我们来测试一下。

在这里插入图片描述

在这里插入图片描述

有没有看到。

使用mybatis时,如果想要将查询字段映射到pojo字段上,是要求数据库字段和pojo字段名一致的,可以在配置在xml中配置resultMap,然后再标签中引用,或者是将给查询的字段名起和pojo字段一致的别名。

方法一:配置xml的resultMap

id为resultMap的唯一标识
<resultMap type="cn.pojo.brand" id="brandMap">
  	<result column="first_char" property="firstChar"/>
</resultMap>

方法二:给查询字段取别名

select id,name,first_char as firstChar
from brand

一般使用mybatis还是倾向于在xml中配置resultMap,这样的话在查询的时候就不用每次都给数据库字段取别名了

### MyBatis-Plus数据库字段映射配置及使用方法 #### 自动转换驼峰命名至下划线 MyBatis-Plus 默认会将 Java 类中的驼峰命名法自动转换为 SQL 表格里的下划线分隔形式。这意味着对于名为 `userName` 的属性,默认情况下会被映射到名为 `user_name` 的列上[^1]。 然而,当遇到数据库字段同样采用驼峰命名的情况时,则可能会引发错误。此时可以通过多种方式来解决问题: #### 使用注解指定字段名称 为了确保特定的字段能够正确地被映射到对应的数据库列,可以利用 `@TableField` 注解显式定义这一关系。例如,在实体类中声明如下: ```java public class User { @TableId private Long id; @TableField("errorMsg") private String errorMsg; // ...其他属性方法 } ``` 这里通过 `@TableField(value="errorMsg")` 明确指定了该成员变量应关联于数据库表内的 `errorMsg` 列[^2]。 #### 处理特殊类型的字段映射 针对一些特殊的场景,比如加密/解密操作或是 JSON 字段处理,还可以借助自定义类型处理器(`TypeHandler`)实现更复杂的逻辑。具体做法是在相应字段上方添加带有 `typeHandler` 参数的 `@TableField` 或者直接在实体类级别应用 `@TableName(autoResultMap=true)` 来开启全局的结果集映射功能[^3][^4]: ```java @TableField(typeHandler=CustomJsonTypeHandler.class) private Map<String,Object> extraInfo; ``` 以上就是关于 MyBatis-Plus 如何进行数据库字段映射的一些常见解决方案技术细节介绍。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值