12关联查询_多对多

数据库

Course表
在这里插入图片描述
在这里插入图片描述
Student表
在这里插入图片描述
middle表
在这里插入图片描述
在这里插入图片描述
多对多的关系需要使用第三张表指定两表的对应关系。

实体类

Course.java

@Getter
@Setter
@ToString
public class Course {
	private Integer cid;
	private String cname;
}

Student.java

@Getter
@Setter
@ToString
public class Student {
	private Integer sid;
	private String sname;
	//关联属性
	private Set<Course> courses;
}

多表关联

IStudentDao.java接口

public interface IStudentDao {
	Student selectStudentById(Integer sid);
}

映射文件IStudentDao.xml

<?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="com.dao.IStudentDao">

	<resultMap type="Student" id="StudentMap">
		<id column="sid" property="sid"/>
		<result column="sname" property="sname"/>
		<collection property="courses" ofType="Course">
			<id column="cid" property="cid"/>
			<result column="cname" property="cname"/>
		</collection>
	</resultMap>
	<!-- 多表联合查询 -->
	<select id="selectStudentById" resultMap="StudentMap"> 
		select sid,sname,cid,cname from student,course,middle
		where sid=studentId and cid=courseId and sid=#{xxx}
	</select>
</mapper>

与之前一对多的查询类似,就不多叙述了
测试类

public class MyView {

	private SqlSession session;
	private IStudentDao dao;
	//此方法一般用于搭建测试方法的执行环境
	@Before
	public void Before() throws IOException {
		 session = MyBatisUtil.getSqlSession();
		 dao = session.getMapper(IStudentDao.class);
	}
	@Test
	public void test01() {
		Student student = dao.selectStudentById(2);
		System.out.println(student);
	}
}

最后的执行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坚定你坚定的步伐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值