多表联查还是不太懂
studentMapper
<resultMap id="forCourse" type="com.damu.entity.Student"> <id property="id" column="id"></id> <!-- <result column="name" property="studentName"></result> --> <collection property="courses" column="id" ofType="com.damu.entity.Course" select="getCourse"> </collection> </resultMap> <select id="getCourse" resultMap="forCourse"> select * from student where id=#{id} </select>
studentDao
public List<Student> findStudentCourse(int id) { try { list = getSession().selectList("getCourse",new Student(id)); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); } finally { sqlSession.close(); } return list; }
输出结果:
[Student{id=2, reg_no=20171202, name='萧景琰', sex='男', age=30, grade='2008', major='哲学系'}]
怎样才能输出多表联查的那种结果,怎么我的查询和简单查询没啥两样。。
正在回答
这个错误出现的原因一般是:对象互相嵌套设置出现StackOverflowError异常
1、老师在此代码中,实现多表联查的几个条件:address 表中有userid ,作为外键关联 user表的id
2、UserMapper
同学的StudentMapper不正确,你可以参考一下源码中的UserMapper
3、老师在userDao中查的是findUsers,并不是getAddress 。
而同学的studentDao 里写的是getCourse
可以对应一下课程和学生的关系。再改一下。建议同学再听一听老师的课程。
Course 对应的是案例中的 Address Student 对应的是 User 。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
我把List<Course> courses 这个属性 也写到 Student 的toString方法中去了,
现在报这个错误,没遇到过,不会。。。
package com.damu.entity; import java.util.List; public class Student { private int id; private int reg_no; private String name; private String sex; private int age; private String grade; private String major; private List<Course> courses; @Override public String toString() { return "Student{" + "id=" + id + ", reg_no=" + reg_no + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" + age + ", grade='" + grade + '\'' + ", major='" + major + '\'' + '}'; } public Student() { } public Student(int id) { this.id = id; } public Student(int id, int reg_no, String name, String sex, int age, String grade, String major) { this.id = id; this.reg_no = reg_no; this.name = name; this.sex = sex; this.age = age; this.grade = grade; this.major = major; } public Student(int reg_no, String name, String sex, int age, String grade, String major) { this.reg_no = reg_no; this.name = name; this.sex = sex; this.age = age; this.grade = grade; this.major = major; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getReg_no() { return reg_no; } public void setReg_no(int reg_no) { this.reg_no = reg_no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } public List<Course> getCourses() { return courses; } public void setCourses(List<Course> courses) { this.courses = courses; } }
这个是Student类
但是数据表中的student是没有course属性的。
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 277 份
- 解答问题 4297 个
Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星