mybatis11–多对多关联查询详解编程语言
编程语言 详解 查询 8211 关联
2023-06-13 09:20:36 时间
多对多关联! 其实就是两个一对多的关联! 比如说 一个学生可以有多个老师!一个老师可以有多个学生!
那么 学生和老师之间的关系 可以理解为 多对多的关联关系!
关键是怎么建立数据库中两个表之间的关系???
这时候需要一个中间表来组织两张表的关系!
创建对应的数据库表!
student表
teacher表
middle表
创建对应的实体类
/** *学生对应的实体类 public class Student { private Integer sId; private String sName; //一个学生可以有多个老师 private Set Teacher teachers=new HashSet Teacher public Integer getsId() { return sId; public void setsId(Integer sId) { this.sId = sId; public String getsName() { return sName; public void setsName(String sName) { this.sName = sName; public Set Teacher getTeachers() { return teachers; public void setTeachers(Set Teacher teachers) { this.teachers = teachers; public Student(Integer sId, String sName, Set Teacher teachers) { super(); this.sId = sId; this.sName = sName; this.teachers = teachers; public Student() { super(); //在双向关联的时候 只能一方显示关联信息 否则会出现stackOverflow 异常 @Override public String toString() { return "Student [sId=" + sId + ", sName=" + sName + ", teachers=" + teachers + "]";
public String toString() { return "Teacher [tId=" + tId + ", tName=" + tName + ", students=" + students.size() + "]"; }
创建对应的dao
public interface StudentDao { /** * 根据学生的编号查询所有对应老师信息 Student selectTeahcerById(Integer tId); }
创建对应的mapper文件
?xml version="1.0" encoding="UTF-8"? !DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-Mapper.dtd" mapper namespace="cn.bdqn.dao.StudentDao" resultMap type="Student" id="studentMap" id property="sId" column="sid"/ result property="sName" column="sname"/ !-- 设置关联集合的属性 -- collection property="teachers" ofType="Teacher" id property="tId" column="tid"/ result property="tName" column="tname"/ /collection /resultMap !-- 根据学生的编号查询所有对应老师信息 -- select id="selectTeahcerById" resultMap="studentMap" select sid,sname,tid,tname from student,middle,teacher where sid=studentId and tid=teacherId and sid=#{xxx} /select /mapper
在mybatis.xml文件中管理mapper文件
!-- 加载映射文件信息 -- mappers mapper resource="cn/bdqn/dao/StudentMapper.xml" / /mappers
创建对应的测试类
public class TeacherTest { StudentDao dao; SqlSession session; @Before public void before() { // 因为需要关闭session 需要把session提取出去 session = SessionUtil.getSession(); dao = session.getMapper(StudentDao.class); @After public void after() { if (session != null) { session.close(); /** * 根据老师的编号查询所有的导师信息 @Test public void test1() { Student student = dao.selectTeahcerById(1); System.out.println(student); }
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/12142.html
cjavaxml相关文章
- Java从ArrayList指定position位置开始删除后面全部子元素详解编程语言
- activiti和SSH项目做整合详解编程语言
- Python实现二分查找(二分查询)详解编程语言
- python通过MySQLdb模块连接查询mysql数据详解编程语言
- JS实现简易图片轮播效果详解编程语言
- JavaScript验证字符串是否包含英文字符、数字或者汉字代码实例详解编程语言
- JS日期比较大小 给定时间和持续时间计算最终时间详解编程语言
- Java 身份证工具类详解编程语言
- Java基础加强之并发(一)基本概念介绍详解编程语言
- mybatis09–自连接一对多查询详解编程语言
- C语言之printf函数详解编程语言
- css笔记详解编程语言
- Java面向对象知识点总结大全详解编程语言
- java字符串操作和日期操作demo详解编程语言
- jpa多表查询详解编程语言
- 添加jQuery方法解析url查询部分详解编程语言
- ABAP 通过SUBMIT获取另一个程序里的数据源详解编程语言
- 业精于勤荒于嬉—Go的GORM查询详解编程语言
- BOM初始状态配置详解编程语言
- AP RFC介绍:关于sRFC,aRFC,tRFC,qRFC和bgRFC详解编程语言