使用Mybatis 如何实现多对一或一对多的关联查询

您所在的位置:网站首页 mybatis怎么一对多 使用Mybatis 如何实现多对一或一对多的关联查询

使用Mybatis 如何实现多对一或一对多的关联查询

#使用Mybatis 如何实现多对一或一对多的关联查询| 来源: 网络整理| 查看: 265

使用Mybatis 如何实现多对一或一对多的关联查询 发布时间:2020-11-17 16:24:33 来源:亿速云 阅读:210 作者:Leah 栏目:编程语言

使用Mybatis 如何实现多对一或一对多的关联查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

首先  数据库量表之间字段关系(没有主外键)

studentmajor表的id字段对应student表里major字段

使用Mybatis 如何实现多对一或一对多的关联查询

两个实体类

package com.model; import java.util.Date; public class Student { private Integer sno; private String sname; private String ssex; private Integer sclass; private StudentMajor studentmajor; public Student() { super(); } public Student(Integer sno, String sname, String ssex, Integer sclass, StudentMajor studentmajor) { super(); this.sno = sno; this.sname = sname; this.ssex = ssex; this.sclass = sclass; this.studentmajor = studentmajor; } public StudentMajor getStudentmajor() { return studentmajor; } public void setStudentmajor(StudentMajor studentmajor) { this.studentmajor = studentmajor; } public Integer getSno() { return sno; } public void setSno(Integer sno) { this.sno = sno; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getSsex() { return ssex; } public void setSsex(String ssex) { this.ssex = ssex; } @Override public String toString() { return "Student [sno=" + sno + ", sname=" + sname + ", ssex=" + ssex + ", sclass=" + sclass + ", studentmajor=" + studentmajor + "]"; } public Integer getSclass() { return sclass; } public void setSclass(Integer sclass) { this.sclass = sclass; } }package com.model; import java.util.List; public class StudentMajor { private Integer id; private String mcode; private String mname; private List students; public StudentMajor() { super(); } public StudentMajor(Integer id, String mcode, String mname, List students) { super(); this.id = id; this.mcode = mcode; this.mname = mname; this.students = students; } @Override public String toString() { return "StudentMajor [id=" + id + ", mcode=" + mcode + ", mname=" + mname + ", students=" + students + "]"; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getMcode() { return mcode; } public void setMcode(String mcode) { this.mcode = mcode; } public String getMname() { return mname; } public void setMname(String mname) { this.mname = mname; } public List getStudents() { return students; } public void setStudents(List students) { this.students = students; } }

定义两个接口

package com.dao; import java.util.List; import java.util.Map; import com.model.Student; public interface StudentMapper { /** * 全表查询 */ public List selectall();   /** * 根据专业查人员,给一对多用 */ public List selectz(Integer major); }package com.dao; import java.util.List; import com.model.StudentMajor; public interface StudentMajorMapper { /** * 全表查询 * @return */ public List selectAll(); /** * 根据主键查数据,给多对一用 * @param id * @return */ public StudentMajor select(Integer id); }

定义两个实体类的映射方法

select * from student select * from student s where s.major=#{major} select * from studentmajor select * from studentmajor where id=#{id}

JUnit测试

package com.util; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.dao.StudentMajorMapper; import com.dao.StudentMapper; import com.model.Student; import com.model.StudentMajor; public class JJJtest { private SqlSession ss; private StudentMapper sm; private StudentMajorMapper smm; @Before public void setUp() throws Exception { ss=SqlSessionUtil.getSqlSession(); sm=ss.getMapper(StudentMapper.class); smm=ss.getMapper(StudentMajorMapper.class); } @After public void tearDown() throws Exception { ss.commit(); ss.close(); } //一对多查询 public void test() { List list=smm.selectAll(); for(StudentMajor a:list){ System.out.println(a); } } //根据专业查人员,给一对多用 public void selectz(){ List l=sm.selectz(3); for(Student a:l){ System.out.println(a); } } //多对一查询 @Test public void selectall() { List st=sm.selectall(); for(Student tt:st){ System.out.println(tt); } } //根据主键查询,给多对一用 public void select(){ StudentMajor a=smm.select(1); System.out.println(a); } }

一对多查询结果

使用Mybatis 如何实现多对一或一对多的关联查询

多对一查询结果

使用Mybatis 如何实现多对一或一对多的关联查询

关于使用Mybatis 如何实现多对一或一对多的关联查询问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐内容:MyBatis面试题和答案

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatis 一对多 多对一 上一篇新闻:使用SpringBoot如何实现远程连接redis服务器 下一篇新闻:Java项目中和实现自动生成一个构造方法 猜你喜欢 php中把对象转为数组的函数是哪个 php如何从数组取不同的值 laravel hasManyThrough怎么用 怎么用VuePress开发一个代码复制插件 PHP7的协程怎么实现 vue中v-for指令的key值可以是index吗 php如何平滑升级 异步请求PHP服务器,不返回数据怎么办 php如何实现秒转换成分 webstorm不识别PHP该怎么解决


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3