Mybatis一对多与多对一查询处理详解

要点

  • 主要还是结果集映射(resultMap)
  • association标签: 一个复杂类型的关联;许多结果将包装成这种类型(JavaBean)嵌套结果映射,关联可以是 resultMap 元素,或是对其它结果映射的引用
  • collection标签: 一个复杂类型的集合(List)嵌套结果映射,集合可以是resultMap元素,或是对其它结果映射的引用

一对多(association)

数据库结构

Mybatis一对多与多对一查询处理详解_第1张图片

tid是student的外键,是teacher表的id

JavaBean

public class Student {
 private int id;
 private String name;
 private Teacher teacher;
}
public class Teacher {
 private int id;
 private String name;
}

mapper.java

public interface StudentMapper {
 List getStudent();
 List getStudent2();
}

Student类里面有teacher,要想查出Student中的Teacher就需要映射。

方法有二

(1)


  
    
    
    
  
        
  

Mybatis一对多与多对一查询处理详解_第2张图片

(2)


  
    
    
    
      
      
    
  

Mybatis一对多与多对一查询处理详解_第3张图片

多对一

JavaBean

public class Teacher2 {
  private int id;
  private String name;
  //一个老师对应多个学生
  private List students;
}
public class Student2 {
  private int id;
  private String name;
  private int tid;
}

mapper.java

public interface TeacherMapper2 {
  List getTeacher(@Param("id") int id);
}

mapper.xml





  
  
    
    
    
      
      
      
    
  

Mybatis一对多与多对一查询处理详解_第4张图片

小结

  • 一对多和多对一区别不大
  • 其实就是association(类)和collection(集合)的区别
  • 还有ofType和javaType的区别
  • 如果查询结果不符合预期,请设置别名试一试

到此这篇关于Mybatis一对多与多对一查询处理的文章就介绍到这了,更多相关Mybatis一对多与多对一查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(Mybatis一对多与多对一查询处理详解)