mybatis plus 中 association和collection 的例子
时间: 2024-06-13 16:04:01 浏览: 166
MyBatis Plus中的Association和Collection都是用于多表关联查询的。其中Association用于一对一的关系,Collection用于一对多的关系。
下面是一个Association的例子:
假设我们有两个表,一个是学校表(school),另一个是班级表(class)。一个学校可以有多个班级,但一个班级只属于一个学校。我们需要查询学校信息,并且将学校下的所有班级信息也一并查询出来。
```java
public class School {
private Long id;
private String name;
private List<Class> classes; // getter and setter
}
public class Class {
private Long id;
private String name;
private Long schoolId;
// getter and setter
}
```
对应的Mapper.xml文件如下:
```xml
<select id="getSchoolById" resultMap="schoolResultMap">
select * from school where id = #{id}
</select>
<resultMap id="schoolResultMap" type="School">
<id property="id" column="id"/>
<result property="name" column="name"/>
<collection property="classes" ofType="Class">
<id property="id" column="id"/>
<result property="name" column="name"/>
<association property="school" javaType="School">
<id property="id" column="school_id"/>
<result property="name" column="school_name"/>
</association>
</collection>
</resultMap>
```
上述代码中,我们使用了collection标签来表示一对多的关系,使用了association标签来表示一对一的关系。其中,association标签中的javaType属性表示关联的实体类类型,id标签中的column属性表示关联的字段名。
下面是一个Collection的例子:
假设我们有两个表,一个是班级表(class),另一个是学生表(student)。一个班级可以有多个学生,我们需要查询班级信息,并且将班级下的所有学生信息也一并查询出来。
```java
public class Class {
private Long id;
private String name;
private List<Student> students;
// getter and setter
}
public class Student {
private Long id;
private String name;
private Long classId;
// getter and setter
}
```
对应的Mapper.xml文件如下:
```xml
<select id="getClassById" resultMap="classResultMap">
select * from class where id = #{id}
</select>
<resultMap id="classResultMap" type="Class">
<id property="id" column="id"/>
<result property="name" column="name"/>
<collection property="students" ofType="Student">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="classId" column="class_id"/>
</collection>
</resultMap>
```
上述代码中,我们同样使用了collection标签来表示一对多的关系。注意,由于Student实体类中已经有了classId属性,因此我们不需要再使用association标签来表示一对一的关系。
阅读全文