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自动生成的脚本中,也是会自动启用驼峰转下划线映射的

posted @ 2023-11-16 22:01  天启A  阅读(907)  评论(0)    收藏  举报