stringintegerclassencodinginterfacejoin
在学习MyBatis3的过程中,文档上面一直在强调一个id的东西!在做这个实验的时候,也因为没有理解清楚id含义而导致一对多的“多”中也只有一条数据。id和result的唯一不同是id表示的结果将是当比较对象实例时用到的标识属性。这帮助来改进整体表现,特别是缓存和嵌入结果映射。所以不同数据的id应该唯一区别,不然倒置数据结果集只有一条数据。
TeacherMapper.xml
[xhtml] view plaincopyprint?
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14. select t.t_id,t.t_name,s.t_s_id,s.s_id,s.s_name
15. from teacher t join student s on t.t_id = s.t_s_id where t.t_id = #{id}
16.
17.
Teacher
[java] view plaincopyprint?
01.package com.nantian.mybatis.one2one;
02.
03.import java.util.List;
04.
05.import com.nantian.mybatis.one2many.Student;
06.
07.public class Teacher {
08. private int id;
09. private String name;
10. private List students;
11.
12. public int getId() {
13. return id;
14. }
15.
16. public void setId(int id) {
17. this.id = id;
18. }
19.
20. public String getName() {
21. return name;
22. }
23.
24. public void setName(String name) {
25. this.name = name;
26. }
27.
28. public List getStudents() {
29. return students;
30. }
31.
32. public void setStudents(List students) {
33. this.students = students;
34. }
35.}
TeacherMapper
[java] view plaincopyprint?
01.package com.nantian.mybatis.one2many;
02.
03.import com.nantian.mybatis.one2one.Teacher;
04.
05.public interface TeacherMapper {
06. public Teacher one2many(int id);
07.}
Student
[java] view plaincopyprint?
01.package com.nantian.mybatis.one2many;
02.
03.public class Student {
04. private int id;
05. private String name;
06.
07. public int getId() {
08. return id;
09. }
10.
11. public void setId(int id) {
12. this.id = id;
13. }
14.
15. public String getName() {
16. return name;
17. }
18.
19. public void setName(String name) {
20. this.name = name;
21. }
22.}
T
[java] view plaincopyprint?
01.package com.nantian.mybatis.one2many;
02.
03.import java.util.List;
04.
05.import org.apache.ibatis.session.SqlSession;
06.
07.import com.nantian.mybatis.data.DBUtil;
08.import com.nantian.mybatis.one2one.Teacher;
09.
10.public class T {
11.
12. public static void main(String[] args) {
13. SqlSession sqlSession = DBUtil.getInstance().getSqlSessionFactory()
14. .openSession();
15. try {
16. TeacherMapper teacherMapper = sqlSession
17. .getMapper(TeacherMapper.class);
18. Teacher teacher = teacherMapper.one2many(100);
19. List students = teacher.getStudents();
20. System.out.println(teacher.getId());
21. System.out.println(teacher.getName());
22. for (Student student : students) {
23. System.out.println(student.getId());
24. System.out.println(student.getName());
25. }
26. } finally {
27. sqlSession.close();
28. }
29. }
30.
31.}