MyBatis 3(中文版) 第四章 使用註解配置SQL對映器
阿新 • • 發佈:2019-01-25
例如,看下面的findStudentById()和findAllStudents()方法:
這裡兩個語句的@Results配置完全相同,但是我必須得重複它。這裡有一個解決方法。我們可以建立一個對映器Mapper配置檔案, 然後配置<resultMap>元素,然後使用@ResultMap註解引用此<resultMap>。
在StudentMapper.java中,使用@ResultMap引用名為StudentResult的resultMap。
- @Select("SELECT * FROM STUDENTS WHERE STUD_ID=#{studId}")
- @Results(
- {
- @Result(id = true, column = "stud_id", property = "studId"),
- @Result(column = "name", property = "name"),
-
@Result(column = "email", property = "email"
- @Result(column = "addr_id", property = "address.addrId")
- })
- Student findStudentById(int studId);
- @Select("SELECT * FROM STUDENTS")
- @Results(
- {
- @Result(id = true, column = "stud_id", property = "studId"),
- @Result(column = "name", property = "name"),
-
@Result
- @Result(column = "addr_id", property = "address.addrId")
- })
- List<Student> findAllStudents();
這裡兩個語句的@Results配置完全相同,但是我必須得重複它。這裡有一個解決方法。我們可以建立一個對映器Mapper配置檔案, 然後配置<resultMap>元素,然後使用@ResultMap註解引用此<resultMap>。
在StudentMapper.xml中定義一個ID為StudentResult的<resultMap>。
- <mappernamespace="com.mybatis3.mappers.StudentMapper">
- <resultMaptype="Student"id="StudentResult">
- <idproperty="studId"column="stud_id"/>
- <resultproperty="name"column="name"/>
- <resultproperty="email"column="email"/>
- <resultproperty="phone"column="phone"/>
- </resultMap>
- </mapper>
在StudentMapper.java中,使用@ResultMap引用名為StudentResult的resultMap。
- publicinterface StudentMapper
- {
- @Select("SELECT * FROM STUDENTS WHERE STUD_ID=#{studId}")
- @ResultMap("com.mybatis3.mappers.StudentMapper.StudentResult")
- Student findStudentById(int studId);
- @Select("SELECT * FROM STUDENTS")
- @ResultMap("com.mybatis3.mappers.StudentMapper.StudentResult")
- List<Student> findAllStudents();
- }