多表联查还是不太懂
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 星