java - MyBatis 列映射

标签 java 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 等),但这看起来也很蹩脚。

有什么想法吗?谢谢。

最佳答案

感谢 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 代码。在我的情况下,会有很少的地方,所以这不是问题,但总的来说,我仍然想找到更通用的解决方案。

关于java - MyBatis 列映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5080000/

相关文章:

java - 为什么叫它 "method hiding"?

java - 如何正确地将String转换为ArrayList?

java - 如何在 emacs 语义中包含标准 jdk 库?

我的巴蒂斯!将多个参数传递给 Mapper DAO

java - MyBatis 中如何选择动态 fetchSize

java - 在两个 SQLSessionFactory bean 之一上使用 @Primary 时出现 "java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist"

java - Mybatis生成器xml配置。设置表之间的连接

java - 使用 Java AsyncHttpClient 库执行异步连接?

java - tomcat 显示 org.apache.catalina.LifecycleException

java - Spring 中的 MyBatis 与 Sql Builder 和注释