多表联查还是不太懂
studentMapper
1 2 3 4 5 6 7 8 9 | < 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
1 2 3 4 5 6 7 8 9 10 11 12 | 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方法中去了,
现在报这个错误,没遇到过,不会。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | 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积分~
来为老师/同学的回答评分吧