DM8 java mybatis xml 三表联查
时间: 2023-11-16 12:07:06 浏览: 62
假设我们有三张表:`students`、`classes`、`scores`,其中`students`表和`classes`表是一对多的关系,`students`表和`scores`表是一对一的关系,我们需要查询出每个学生的成绩和所在班级的信息,可以使用MyBatis的XML配置文件来实现三表联查。
首先,我们需要在`Student`类中添加`Class`和`Score`属性:
```java
public class Student {
private Integer id;
private String name;
private Class clazz;
private Score score;
// 省略getter和setter方法
}
```
然后,在`StudentMapper`中添加如下方法:
```xml
<select id="selectStudentsWithClassAndScore" resultMap="studentMap">
SELECT s.id, s.name, c.id AS class_id, c.name AS class_name, sc.id AS score_id, sc.score
FROM students s
LEFT JOIN classes c ON s.class_id = c.id
LEFT JOIN scores sc ON s.id = sc.student_id
</select>
<resultMap id="studentMap" type="Student">
<id property="id" column="id"/>
<result property="name" column="name"/>
<association property="clazz" javaType="Class">
<id property="id" column="class_id"/>
<result property="name" column="class_name"/>
</association>
<association property="score" javaType="Score">
<id property="id" column="score_id"/>
<result property="score" column="score"/>
</association>
</resultMap>
```
这里使用了三个表的`LEFT JOIN`,将`students`表、`classes`表和`scores`表连接起来,同时使用了MyBatis的`<association>`标签将班级和成绩映射到`Student`对象的`Class`属性和`Score`属性中。
最后,在`StudentMapper`接口中添加如下方法:
```java
List<Student> selectStudentsWithClassAndScore();
```
这样就可以通过`selectStudentsWithClassAndScore()`方法查询出每个学生的成绩和所在班级的信息了。
阅读全文