Mybatis一对多与多对一查询处理详解
要点
- 主要还是结果集映射(resultMap)
- association标签:一个复杂类型的关联;许多结果将包装成这种类型(JavaBean)嵌套结果映射,关联可以是resultMap元素,或是对其它结果映射的引用
- collection标签:一个复杂类型的集合(List)嵌套结果映射,集合可以是resultMap元素,或是对其它结果映射的引用
一对多(association)
数据库结构
tid是student的外键,是teacher表的id
JavaBean
publicclassStudent{ privateintid; privateStringname; privateTeacherteacher; } publicclassTeacher{ privateintid; privateStringname; }
mapper.java
publicinterfaceStudentMapper{ ListgetStudent(); List getStudent2(); }
Student类里面有teacher,要想查出Student中的Teacher就需要映射。
方法有二
(1)
select*frommybatis.student select*frommybatis.teacherwhereid=#{Anything}
(2)
select*frommybatis.studentass,mybatis.teacherastwheres.tid=t.id
多对一
JavaBean
publicclassTeacher2{ privateintid; privateStringname; //一个老师对应多个学生 privateListstudents; } publicclassStudent2{ privateintid; privateStringname; privateinttid; }
mapper.java
publicinterfaceTeacherMapper2{ ListgetTeacher(@Param("id")intid); }
mapper.xml
selects.id,s.name,s.tid,t.idastid,t.nameastnamefrommybatis.studentass,mybatis.teacherastwheres.tid=t.idandt.id=#{id}
小结
- 一对多和多对一区别不大
- 其实就是association(类)和collection(集合)的区别
- 还有ofType和javaType的区别
- 如果查询结果不符合预期,请设置别名试一试
到此这篇关于Mybatis一对多与多对一查询处理的文章就介绍到这了,更多相关Mybatis一对多与多对一查询内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。