mybatisplus关于驼峰命名法与下划线的映射
今天遇到一个很坑的事情,我在测试之前的案例的时候我有一个字段的名字是typeId,我调试之后发现插入出现了错误。
开启sql日志之后我发现mybatisplus自动把我的typeId改成type_id了。其实是我当时开启了自动转的配置不知道
无奈之下我只能把数据库、实体类的驼峰命名法改成下划线
### SQL: SELECT id,name,description,type_id FROM hero
### Cause: java.sql.SQLSyntaxErrorException: Unknown column 'type_id' in 'field list'
这是我的报错信息
这是我的数据库具体内容
@TableName("hero") @Data public class Hero { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; private String description; private Integer typeId;//后修改为type_id,数据库也改了,就可以查出来了 }
这是我的实体类
当然也有另一种简单方法,明确映射问题
@TableField(value = "typeId") private Integer typeId;
——————————2024年9月11日编辑
差不多时隔一年了,今天再看看这段自己刚写的博客...决定修改一下标准写法不再误人子弟
在配置里直接添加上,并且记住MySQL是下划线写法,java是驼峰命名法
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
mybatis的配置中存在默认的驼峰转下划线配置,当然他的默认是false的,需要修改成true:
为什么要用驼峰转下划线?
因为默认情况下MySQL的命名是用下划线的,上述示例中应该是type_id(注意,MySQL里是不区分大小写的)
而java中,我们习惯用驼峰命名,例如typeId。倒不如说这是一种人们需要遵守的开发规范,哪怕是在sql自动生成的脚本中,也是会自动启用驼峰转下划线映射的