Mybatis Plus数据字段名带下划线读取的值为null

Mybatis Plus数据字段名带下划线读取的值为null

0.引言

前端时间在忙期末课设时发现了一个天坑,导致排查了很久的问题。由于是第一次接触mybatisplus没有什么经验,导致在mybatisplus自动开启下划线转驼峰上踩了坑,虽然已经有很多文章记录了这件事,但我还是想亲自写一篇文章来记录一下。

1.问题发现

使用环境:springboot+mybatisplus

假如现在存在这么一个实体,personal_name

@TableName(value = "my_table")
public class PersonalInfo implements Serializable {
​
    /**
     * 姓名
     */
    @TableField(value = "personal_name")
    private String personal_name;
​
​
    public String getPersonal_name() {
        return personal_name;
    }
​
    public void setPersonal_name(String personal_name) {
        this.personal_name = personal_name;
    }
}

实际测试下来就会发现,虽然制定了personal_name的字段名,但是获取到的值仍然为null,而其他不带下划线的名字都是正常的,此时肯定会联想到是不是与命名中带下划线有关。

最终发现罪魁祸首就是mybatisplus自动开启了下划线转驼峰命名的操作。

2.解决办法

你只要告诉mybatis plus我不想下划线转驼峰,按照指定的下划线来。

如果你使用的是 YAML(.yml)配置文件,可以按照以下方式配置 MyBatis-Plus 关闭下划线自动转驼峰:

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false

上述配置将在 MyBatis-Plus 的配置中设置 map-underscore-to-camel-case 属性为 false,从而关闭下划线自动转驼峰。在使用yml配置时请注意正确的缩进。

如果你使用的是 Properties(.properties)配置文件,可以按照以下方式配置:

mybatis-plus.configuration.map-underscore-to-camel-case=false

注意:关闭自动转换后所有的字段都需要通过@TableField()注解或者是.xml文件中指定字段的映射关系,这无疑增加了很多工作量,而且后续出现改动的话也会很麻烦。所以在开发过程中还是尽量不要在类中以_的形式命名。

© 版权声明
THE END
喜欢就支持一下吧
点赞17 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容