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文件中指定字段的映射关系,这无疑增加了很多工作量,而且后续出现改动的话也会很麻烦。所以在开发过程中还是尽量不要在类中以_的形式命名。
© 版权声明
- 本博客所拥有的文章除特别声明外,均默认采用 CC BY 4.0 许可协议。
- 文章部分内容可能来源于公共网络,如有侵权,请联系博主在核实后进行修改或删除。
THE END
暂无评论内容