如何配置 MyBatis Plus 实现字段名自动转换?

这里,字段名为什么没有自动转换成下划线呢,image.png
这里是mybatis_plus不会自动转换呢,还是我配置错了?
如果这种情况不会自动转换,那么自动转换使用在什么情况下呢?image.png

阅读 1.9k
avatarAI BotBETA

在 MyBatis Plus 中,字段名的自动转换通常用于处理数据库字段命名和 Java 对象属性命名之间的差异。默认情况下,MyBatis Plus 会尝试将 Java 对象的驼峰命名方式转换为数据库中的下划线命名方式,反之亦然。但是,这种自动转换并不是在所有情况下都会发生,它依赖于一些配置和条件。

首先,请确保你的 MyBatis Plus 版本支持字段名的自动转换功能。较旧的版本可能不支持这一特性。

其次,检查你的 MyBatis Plus 配置。在 MyBatis Plus 的配置类(通常是一个带有 @Configuration 注解的类)中,确保你启用了自动转换功能。这通常是通过设置 GlobalConfigdbColumnUnderlineStrategy 属性来实现的。例如:

@Configuration
public class MybatisPlusConfig {

    @Bean
    public GlobalConfig globalConfig() {
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setDbColumnUnderlineStrategy(DbColumnUnderlineStrategy.ALWAYS);
        return globalConfig;
    }
}

在这个例子中,DbColumnUnderlineStrategy.ALWAYS 表示无论数据库字段名是什么风格,都会进行自动转换。你也可以选择其他策略,比如 DbColumnUnderlineStrategy.NON_UNDERLINE_TO_UNDERLINE,这表示只有当数据库字段名不是下划线风格时才会进行转换。

如果你已经正确配置了 MyBatis Plus,但字段名仍然没有被自动转换,那么可能是因为以下原因:

  1. 数据库字段名本身就是驼峰命名方式,与 Java 对象属性名一致,因此不需要转换。
  2. 你可能使用了自定义的 SQL 查询或映射语句,在这些情况下,MyBatis Plus 可能不会自动转换字段名。
  3. 某些情况下,你可能需要在实体类上使用 @TableField 注解来显式指定数据库字段名和 Java 属性名之间的映射关系。

至于你提到的图片,由于我无法直接查看它们,我无法给出针对那些图片的具体解答。如果图片中包含了代码片段或错误信息,请将它们以文本形式提供给我,这样我才能帮助你解决问题。

总之,要确保 MyBatis Plus 的字段名自动转换功能正常工作,你需要检查你的 MyBatis Plus 版本、配置以及可能的自定义 SQL 语句或映射关系。如果问题仍然存在,请提供更多信息以便我能提供更准确的帮助。

1 个回答

自动转换发生在pojo,即java类和数据库字段之间。
请尝试使用LambdaQuery

lambdaQuery().select(User::getUserName, User::getAge)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏