MyBatis开启自动下划线转驼峰
map-underscore-to-camel-case: true
是 MyBatis 的一个“自动下划线转驼峰”开关。
✅ 它解决了什么问题?
数据库字段命名风格通常是:
user_name, create_time, is_deleted
Java 实体类属性风格是驼峰:
userName, createTime, isDeleted
两边名字不一致,MyBatis 查询后无法自动把列值填到实体类属性里。
✅ 开启后会发生什么?
MyBatis 在封装结果集时会自动做转换:
数据库列名 | 映射到 Java 属性名 |
---|---|
user_name | userName |
create_time | createTime |
is_deleted | isDeleted |
无需手动写别名,也无需写 resultMap。
✅ 举个例子
public class Employee {private Long id;private String userName; // 注意驼峰private LocalDateTime createTime;
}
<select id="getById" resultType="Employee">SELECT id, user_name, create_timeFROM employeeWHERE id = #{id}
</select>
- 没开
map-underscore-to-camel-case
:userName
、createTime
会是 null - 开了
map-underscore-to-camel-case: true
:MyBatis 自动把user_name
→userName
,create_time
→createTime
⚠️ 注意
- 只适用于查询结果封装(
resultType
/resultMap
)
不适用于#{param}
占位符 → 占位符里写 Java 属性名即可。 - 转换规则简单可靠:
下划线后的字母变大写,去掉下划线。
✅ 一句话总结
map-underscore-to-camel-case: true
就是告诉 MyBatis:
数据库里的user_name
自动对应 Java 的userName
,别再让我写一堆别名或 resultMap 了。