Mybatis-Plus驼峰式命名规则配置
发布日期:2021-05-07 15:31:36 浏览次数:17 分类:精选文章

本文共 1586 字,大约阅读时间需要 5 分钟。

MyBatis-Plus驼峰式命名处理及解决表字段映射问题

在实际项目中,MyBatis-Plus对驼峰式命名的处理可能会导致表名和字段名的映射问题。本文将详细介绍如何解决这一问题,并提供最佳实践建议。

问题背景

考虑如下数据库表结构:

CREATE TABLE `t_sysuser` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(200) DEFAULT NULL,
`passWord` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

对应的实体类为:

@Data
public class SysUser {
private Integer id;
private String userName;
private String passWord;
}

接口继承自BaseMapper

public interface SysUserMapper extends BaseMapper
{
}

当执行插入操作:

@Test
public void insert() {
SysUser sysUser = new SysUser();
sysUser.setUserName("xxx");
sysUser.setPassWord("123");
sysUserMapper.insert(sysUser);
}

出现错误提示无法找到t_sysuser表。

默认映射行为

MyBatis-Plus默认会通过下划线将驼峰式命名转换为数据库字段名。例如:

  • 实体名SysUser默认映射为sys_user表名。 -字段名userName默认映射为user_name

在本例中,sysUsert_sysuser的区别来自于表名的下划线处理。

解决方法一:禁用表名下划线处理

首先,配置table-underline: false以禁用表名的下划线处理:

mybatis-plus:
global-config:
db-config:
id-type: 0
table-prefix: t_
table-underline: false

此时,表名保留为t_sysuser,但字段名仍会转换为user_name,导致字段查找失败。

解决方法二:禁用字段名下划线处理

进一步配置map-underscore-to-camel-case: false以禁用字段名的下划线处理:

mybatis-plus:
global-config:
db-config:
id-type: 0
table-prefix: t_
table-underline: false
configuration:
map-underscore-to-camel-case: false

这样,字段名将直接使用驼峰式userName,与数据库字段名一致。

最佳实践建议

  • 默认配置:保持默认配置以避免性能损耗,字段名直接与实体类对应。
  • 配置优化:仅在必要时进行配置,避免不必要的性能开销。
  • 命名规范:确保数据库字段名与实体类命名保持一致,减少映射需求。

通过以上配置,插入操作将成功执行,表名和字段名处理符合预期。

总结

MyBatis-Plus驼峰式命名处理需谨慎配置,尤其是表名和字段名的映射。通过合理配置,可以充分发挥框架优势,确保数据库操作高效稳定。

上一篇:一文搞懂Java8 Lambda表达式(附视频教程)
下一篇:Mybatis-Plus之@TableField字段

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年03月17日 18时45分21秒