eclipse 搭建 mybatis 多表查询(三)

绪论

本章接上章,本章主要讲述mybatis多表查询,用于练习一对多,多对多的复杂关系查询。
在mybatis多表查询中,一对多通过增加附加属性来实现,多对多通过在附加集合属性来存放多条数据。
目的:在三张实体表,一张关系表中查询学生的信息和其所在的班级以及所选的全部课程

一、准备

1.1 数据库建表

建了四张表:
person(学生)

在这里插入图片描述

class(班级)
在这里插入图片描述

course(课程)
在这里插入图片描述

per_cout_relation(学生课程主键联系表)
在这里插入图片描述

1.2 目录

在这里插入图片描述

二、 分层

2.1 model 实体类

完善代码,符合Javabean规范

Person.java
	private int id;
	private String name;
	private String age;
	private int classId;
	private Class perClass;
	private List<Course> courseList;

Course.java

	private int courseId;
	private String courseName;

Class.java

	private int classId;
	private String className;

2.2 Dao

PersonDao.java

查找学生信息和其所在的班级以及所选的全部课程

public interface PersonDao {
	public List<Person> findPersonAndClassAndCourse();
}

PersonDao.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.zk.mybatis.dao.PersonDao">

<resultMap type="Person" id="baseResult">
<id column="p_id" property="id"/>
<result column="p_name" property="name"/>
<result column="p_age" property="age"/>
<result column="class_id" property="classId"/>
<association property="perClass" javaType="Class">
<id column="c_id" property="classId"/>
<result column="c_name" property="className"/>
</association>
<collection property="courseList" ofType="Course">
<id column="course_id" property="courseId"/>
<result column="course_name" property="courseName"/>
</collection>
</resultMap>

<select id="findPersonAndClassAndCourse" resultMap="baseResult">
SELECT p.*,cla.*,cour.*
FROM person p,class cla,course cour,per_cour_relation rea
WHERE p.class_id = cla.c_id AND p.p_id = rea.per_id
and cour.course_id = rea.cour_id
</select>

</mapper>

2.3 Servlet(用于测试)

PersonServlet.java

public class PersonServlet {
	private PersonService personService = new PersonServiceImpl();
	@Test
	public void test1() {
		List<Person> list = personService.findPersonAndClassAndCourse();
		for (Person person : list) {
			System.out.println(person);
		}
	}
}

数据库查询的记录:7条
在这里插入图片描述

返回的结果集是person对象类型,数据库中只有四个person,
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值