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

网友投稿 530 2023-02-07

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

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

要点

主要还是结果集映射(resultMap)

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

collection标签: 一个复杂类型的集合(List)嵌套结果映射,集合可以是resultMap元素,或是对其它结果映射的引用

一对多(association)

数据库结构

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)

select * from mybatis.student

select * from mybatis.teacher where id=#{Anything}

(2)

select * from mybatis.student as s ,mybatis.teacher as t where s.tid=t.id

多对一

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

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select s.id, s.name, s.tid,t.id as tid, t.name as tname from mybatis.student as s ,mybatis.teacher as t where s.tid=t.id and t.id=#{id}

cMeSBadKS

小结

一对多和多对一区别不大

其实就是association(类)和collection(集合)的区别

还有ofType和javaType的区别

如果查询结果不符合预期,请设置别名试一试

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小程序跳转(小程序跳转公众号页面)
下一篇:app应用分发(APP应用分发系统有哪些)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~