mybatis的sql如何返回多个老师下的多个学生信息
时间: 2024-10-10 20:10:49 浏览: 24
解析Mybatis连续传递多个参数的方法
5星 · 资源好评率100%
在MyBatis中,如果你想要查询一个老师下的多个学生信息,并且每个老师又有多个学生,你可以通过动态SQL(Dynamic SQL)或者嵌套查询来实现。这里假设你有一个`teachers`表和一个`students`表,它们之间存在关联。
1. **动态SQL示例**(如果数据模型支持):
使用`<foreach>`标签可以在结果集中循环遍历每个老师,然后获取其对应的学生列表。例如:
```xml
<select id="getStudentsByTeacher" resultType="map">
SELECT t.id as teacherId, st.* FROM teachers t
LEFT JOIN (
SELECT * FROM students s WHERE s.teacher_id = #{teacherId}
) st ON t.id = st.teacher_id
<foreach item="student" index="index" collection="result" open="," separator=", " close=")">
${student.studentName}, ${student.studentAge}
</foreach>
</select>
```
2. **嵌套查询示例**:
如果学生的列表存储在单独的表中,可以先查出教师ID,再用这个ID去查询学生表。例如:
```xml
<select id="getStudentsByTeacher" resultType="map">
SELECT t.id as teacherId, st1.*
FROM teachers t
LEFT JOIN (
SELECT * FROM student_per_teacher sp
WHERE sp.teacher_id = #{teacherId}
) sp ON t.id = sp.teacher_id
LEFT JOIN students st1 ON sp.student_id = st1.id
</select>
```
请注意,这只是一个基本示例,实际的SQL可能需要根据数据库设计和具体的业务需求调整。同时,记得将`#{teacherId}`替换为实际的参数绑定。
阅读全文