企业如何通过vue小程序开发满足高效运营与合规性需求
530
2023-02-07
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
List
}
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
}
public class Student2 {
private int id;
private String name;
private int tid;
}
mapper.java
public interface TeacherMapper2 {
List
}
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~