Mybatis选择嵌套对象

时间:2012-03-15 10:02:44

标签: java mybatis

我正在使用MyBatis进行简单的选择。

假设我们有以下类:

class Book {
    private String bookName;

    public Book(String bookName){
        this.bookName = bookName;
    }

    public String getBookName(){
        return bookName;
    }
}


class Student {
    private String studentName;
    private Book book;

    public Student(){}

    // getters and setters
}

我有一个返回Student对象的方法的注释。

@Select("Select studentName, book from Students")

我的问题是这本书总是空的。我假设MyBatis将使用该JDBC类型(在本例中为String)调用构造函数来填充book。我错过了什么或做错了什么?

1 个答案:

答案 0 :(得分:0)

一个选项是

使用@ConstructorArgs注释显式调用Constructor方法。

@Select("Select studentName, book from Students")
@ConstructorArgs(value = { 
@Arg(column = "studentName", javaType=java.lang.String.class),
@Arg(column = "book", javaType = java.lang.String.class)
})

并将它们传递给Student构造函数,该构造函数调用Book构造函数。