MyBatis 列映射

新手上路,请多包涵

我正在使用 MyBatis 3.0.3 并且遇到问题:数据库中的某些列的名称带有下划线,这些列应该映射到实体属性(当然是驼峰式)

 class User {
  private String first_name;
  ...
}

public interface UserDao {
  @Select("SELECT * FROM users")
  List<User> findAllUsers();
}

不幸的是,我看不出有什么方法可以声明性地解决这个问题(就像在 JPA 中所做的那样 - @Column(name = “first_name”))。我可以在 select-clause 中为此类列创建别名(如 first_name as firstName 等),但这看起来也很蹩脚。

有任何想法吗?谢谢。

原文由 andrii 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 509
2 个回答

感谢 DwB。这有助于:

     @Select("SELECT * FROM users")
    @Results({
        @Result(property = "firstName", column = "first_name"),
        @Result(property = "lastName", column = "last_name")
    })
    List<User> findUsers();

ps 但是如果有多个查询,我需要为返回实体 User 的每个方法编写样板代码 @Results/@Result 代码。就我而言,会有很少的地方,所以这不是问题,但总的来说我仍然想找到更通用的解决方案。

原文由 andrii 发布,翻译遵循 CC BY-SA 2.5 许可协议

Eduardo Macarron 在以下问题上建议了此功能:

https://code.google.com/p/mybatis/issues/detail?id=43

根据 MyBatis 3 的文档,现在可以通过以下描述的设置来实现:

http://mybatis.github.io/mybatis-3/configuration.html#settings

基本上你必须配置:

 <setting name="mapUnderscoreToCamelCase" value="true"/>

意思是:

启用从经典数据库列名称 A_COLUMN 到驼峰式经典 Java 属性名称 aColumn 的自动映射。

原文由 Ernesto Campohermoso 发布,翻译遵循 CC BY-SA 3.0 许可协议

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