上篇讲到在xml使用resultMap进行一对多查询,此篇将使用MyBatis提供的注解进行一对多查询,使用到的注解有:
- @Select : 与xml中的select标签类似
- @Results: 结果集字段映射,与xml中的resultMap标签类似
- @Result: 每个字段结果映射
- @Many: 一对多
例如查询一个课程,每个课程有多个目录,代码:
public interface CourseDAO {
@Select("select * from course where course_id = #{courseId}")
@Results({
@Result(property = "courseId", column = "course_id"),
@Result(property = "courseName", column = "course_name"),
@Result(property = "catalogList", column = "course_id", javaType = List.class,
many = @Many(select = "com.example.demo.dao.CourseDAO.getCatalogList")
)
})
CourseVO getCourse(@Param("courseId") String courseId);
List<CatalogVO> getCatalogList(@Param("courseId") String courseId);
}
//CourseVO类
@Data
public class CourseVO {
/**
* 课程id
*/
private String courseId;
/**
* 课程名
*/
private String courseName;
/**
* 目录集
*/
private List<CatalogVO> catalogList;
}
查询结果格式:
{
"code": 0,
"message": "操作成功",
"data": {
"courseId": "1",
"courseName": "偶像练习生第一课",
"catalogList": [
{
"catalogId": "1",
"catalogName": "基"
},
{
"catalogId": "2",
"catalogName": "泥"
},
{
"catalogId": "3",
"catalogName": "太"
},
{
"catalogId": "4",
"catalogName": "美"
}
]
}
}