2012-03-15 122 views
0

我正在使用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)的构造函数来填充书籍。我错过了什么或做错了什么?

回答

0

一种选择是

使用@ConstructorArgs注释来显式调用构造函数方法。

@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构造函数。