- @One 和 @Many 注解分别表示一对一和一对多关系。@One 注解表示一个对象与另一个对象之间的一对一关系。它可以用在实体类中的属性上,指定该属性所对应的关联对象。@Many 注解表示一个对象与另一个对象之间的一对多关系。它可以用在实体类中的集合属性上,指定该集合所包含的关联对象列表。
- @One 和 @Many 注解有以下属性:
属性 |
描述 |
select |
SQL 语句,指定可加载合适类型实例的映射语句(也就是映射器方法)全限定名 |
fetchType |
用于指定关联对象的加载方式。有两个可选值 FetchType.LAZY 和 FetchType.EAGER。默认FetchType.DEFAULT |
resultMap |
(MyBatis 3.5.5 以上可用), 结果集的完全限定名,该结果映射到查询结果中的集合对象 |
columnPrefix |
(MyBatis 3.5.5以上可用),在嵌套的结果集中对所查询的列进行分组的列前缀。 |
示例
public interface StudentMapper(){
@Select("select * from Student")
@Results({
@Result(id=true, property="id", column="id"),
@Result(property="name",column="name"),
@Result(property="age",column="age"),
@Result(
property="address",
column="address_id",
one=@One(select="com.domain.mapper.AddressMapper.getAddress")
)
})
public List<Student> getAllStudents();
}
示例
public interface StudentMapper(){
@Select("select * from mybatis_grade where id=#{id}")
@Results({
@Result(id=true,column="id", property="id"),
@Result(column="grade_name", property="gradeName"),
@Result(
property="students",
column="id",
many=@Many(select="com.domain.mapper.StudentMapper.getStudentsByGradeId")
)
})
public Grade getGrade(Integer id);
}