1. 程式人生 > >MyBatis 3(中文版) 第四章 使用註解配置SQL對映器

MyBatis 3(中文版) 第四章 使用註解配置SQL對映器

例如,看下面的findStudentById()和findAllStudents()方法:
  1. @Select("SELECT * FROM STUDENTS WHERE STUD_ID=#{studId}")  
  2. @Results(  
  3. {  
  4.     @Result(id = true, column = "stud_id", property = "studId"),  
  5.     @Result(column = "name", property = "name"),  
  6.     @Result(column = "email", property = "email"
    ),  
  7.     @Result(column = "addr_id", property = "address.addrId")  
  8. })  
  9. Student findStudentById(int studId);  
  10. @Select("SELECT * FROM STUDENTS")  
  11. @Results(  
  12. {  
  13.     @Result(id = true, column = "stud_id", property = "studId"),  
  14.     @Result(column = "name", property = "name"),  
  15.     @Result
    (column = "email", property = "email"),  
  16.     @Result(column = "addr_id", property = "address.addrId")  
  17. })  
  18. List<Student> findAllStudents();  

這裡兩個語句的@Results配置完全相同,但是我必須得重複它。這裡有一個解決方法。我們可以建立一個對映器Mapper配置檔案, 然後配置<resultMap>元素,然後使用@ResultMap註解引用此<resultMap>。

在StudentMapper.xml中定義一個ID為StudentResult的<resultMap>。

  1. <mappernamespace="com.mybatis3.mappers.StudentMapper">
  2.   <resultMaptype="Student"id="StudentResult">
  3.     <idproperty="studId"column="stud_id"/>
  4.     <resultproperty="name"column="name"/>
  5.     <resultproperty="email"column="email"/>
  6.     <resultproperty="phone"column="phone"/>
  7.   </resultMap>
  8. </mapper>

在StudentMapper.java中,使用@ResultMap引用名為StudentResult的resultMap。
  1. publicinterface StudentMapper  
  2. {  
  3.     @Select("SELECT * FROM STUDENTS WHERE STUD_ID=#{studId}")  
  4.     @ResultMap("com.mybatis3.mappers.StudentMapper.StudentResult")  
  5.     Student findStudentById(int studId);  
  6.     @Select("SELECT * FROM STUDENTS")  
  7.     @ResultMap("com.mybatis3.mappers.StudentMapper.StudentResult")  
  8.     List<Student> findAllStudents();  
  9. }