下午很开心,自己琢磨增删改查,把简单问题复杂化,然后去解决它,过程中学到了东西,感谢同事。记录一下问题和过程。
问题描述:我需要从第一张表中获取到张老师的班级;
然后,从张老师所在的班级取姓李的学生的集合。
这里用的的技术有:
1、拼接两个列表的list;
2、
算了,我不是一个善于总结的人
1、测试代码
SqlSession sqlSession = MybatisUtils.getSqlSession();
ClazzMapper mapper = sqlSession.getMapper(ClazzMapper.class);
List<Clazz> clazzes = mapper.selectTeacherByName("张%");
List<Integer> ids=new ArrayList<>();
for (Clazz clazz : clazzes) {
ids.add(clazz.getId());
}
StudentMapper1 mapper1 = sqlSession.getMapper(StudentMapper1.class);
VO vo=new VO();
List<Student> listAll=new ArrayList<>();
for(Integer studentClazz:ids){
vo.setStuClazz(studentClazz);
vo.setStuName("李%");
//返回值过多,用list
List<Student> students1 = mapper1.selectStudentByClazzId(vo);
listAll.addAll(students1);
}
listAll.forEach(System.out::println);
}
2、数据库代码
<select id="selectTeacherByName" parameterType="String" resultType="Clazz">
select * from clazz where clazz_teacher like #{clazzTeacher}
</select>
<select id="selectStudentByClazzId" resultType="Student" parameterType="VO">
select * from student where student_clazz=#{stuClazz} and student_name like #{stuName}
</select>
3、接口
List<Clazz> selectTeacherByName(String teacherName);
List<Student> selectStudentByClazzId(VO vo);