
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
对应的实体类为:
@Datapublic class SysUser { private Integer id; private String userName; private String passWord;}
接口继承自BaseMapper
:
public interface SysUserMapper extends BaseMapper{}
当执行插入操作:
@Testpublic 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
。
在本例中,sysUser
与t_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驼峰式命名处理需谨慎配置,尤其是表名和字段名的映射。通过合理配置,可以充分发挥框架优势,确保数据库操作高效稳定。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月17日 18时45分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python爬虫学习
2019-03-04
数据库系统概论:ER图设计
2019-03-04
AC自动机 - Word Puzzles - POJ - 1204
2019-03-04
DIJ - 昂贵的聘礼 - POJ 1062
2019-03-04
Prim / Kruskal - 局域网 - 洛谷 P2820
2019-03-04
Tarjan(割点) - Electricity - POJ 2117
2019-03-04
计算几何(旁切圆) - Ex-circles - UVA 11731
2019-03-04
DP - Tickets - HDU - 1260
2019-03-04
图数据结构以及深度、广度遍历方式
2019-03-04
phpStudy for Linux (lnmp+lamp一键安装包)
2019-03-04
【安卓学习笔记】JAVA基础Lesson9-对象的转型
2019-03-04
JS保留字和关键字
2019-03-04
本校暑假训练营11_Python数据分析入门7-网络1
2019-03-04
本校暑假训练营12_Python数据分析入门7-网络2
2019-03-04
网络安全学习篇50_第四阶段_SSRF
2019-03-04
数据库SQL实战3_获取所有非manager的员工emp_no
2019-03-04
LeetCode7_数组双指针_有序数组元素去重、数组移除指定元素
2019-03-04
LeetCode11_二叉树的层序遍历_BFS迭代、DFS递归、拓展BFS的使用场景
2019-03-04