首页 > 其他分享 >MyBatis 框架的多表查询的实现

MyBatis 框架的多表查询的实现

时间:2023-03-31 17:01:23浏览次数:36  
标签:实体类 多表 定义 查询 course MyBatis 属性

1、表与表的联系类型  一对一(1:1)  一对多(1:n 或 n:1)  多对多(n:m ) 2、Mybatis 中实现多表查询的重要标签 resultMap   在 Mybatis 框架中,resultMap 标签可以表示两个表之间的一对多和一对一关系。   如:一个系可以有多个学生,如果想查询每个系的学生信息时,可以在DepartmentMapper.xml 局部配置文件中,使用 resultMap 标签进行如下配置: <resultMap id="departmentMap" type="cn.java.pojo.Department"> <!—定义主键--> <id property="dept_name" column="dept_name"/> <result property="building" column="building"/> <!—定义普通属性--> <result property="budget" column="budget"/> <!--配置一个包含关系 “有很多”关系,表达一对多联系 --> <collection property="students" ofType="cn.java.pojo.Student"> <id property="ID" column="ID"/> <result property="sname" column="name"/> <result property="sdept" column="dept_name"/> <result property="tot_cred" column="tot_cred"/> </collection> </resultMap>   如:一个系有一个系主任,如果想查询每个系的系主任信息时,可以在DepartmentMapper.xml 局部配置文件中,使用 resultMap 标签进行如下配置: <resultMap id="departmentMap" type="cn.java.pojo.Department"> <!—定义主键--> <id property="dept_name" column="dept_name"/> <result property="building" column="building"/> <!—定义普通属性--> <result property="budget" column="budget"/> <!—每个系有一个系主任,表达一对一联系--> <association property="Dean" javaType="cn.java.pojo.Dean"> <id property="id" column="did"/> <result property="name" column="name"/> </association> </resultMap>  重要标签或属性说明: <resultMap id="departmentMap" type="cn.java.pojo.Department"> 功能: resultMap: 进行多表查询的查询结果集说明; id: 给结果集命名,要唯一 type: 对应相应的实体类  <id property="dept_name" column="dept_name"/> 功能:定义该实体类的主键 property="dept_name" 定义在实体类中的主键的属性名 column="dept_name" 定义在关系表中的主键的字段名  <result property="building" column="building"/> 功能: 定义实体类的普通属性 property=" building " 定义在实体类中的普通属性名 column=" building " 定义在关系表中的普通字段名  <collection property="students" ofType="cn.java.bean.Student"> 功能:定义一对多关系,如一个系里有多个学生,定义多方的数据集合 property="students" 定义多方学生集合 ofType="cn.java.bean.Student" 定义对应的实体类  <association property="Dean" javaType="cn.java.bean.Dean"> 功能:定义一对一关系,如一个系对应一个系主任   3、MyBatis 框架的多对多联系的多表查询  多对多联系(n:m): 观察 student 表和 course 表,两个表之间的关系是多对多联系,即每个学生可以选修多门课,每门课程可以由多位学生学习;  第三方表: takes 表,该表存储学生选修某门课程的成绩数据;  注意:多对多联系一定涉及到 3 个表;  查询需求:查询每个学生选修的课程信息,及课程的分数。 请写出 SQL 查询语句。 在 Student 实体类中,添加一个 List<Course> courseList 属性: private List<Course> courseList; //表示某个学生的选课情况  为该属性生成相应的 get/set 方法;  在 Course 实体类中,添加一个 List<Takes> takeList 属性: private List<Takes> takesList;  //表示某门课程的分数情况  为该属性生成相应的 get/set 方法; 编写 sql 映射文件 StudentMapper.xml <!--定义结果集:学生的多个选课及每门课程的分数--> <resultMap id="StudentCourseTakesMap" type="cn.java.pojo.Student"> <id property="id" column="ID"/> <result property="name" column="name" /> <result property="deptName" column="dept_name" /> <result property="totCred" column="tot_cred" /> <!--选修多门课程--> <collection property="courseList" ofType="cn.java.bean.Course"> <id property="courseId" column="course_id"/> <result property="title" column="title"/> <result property="deptName" column="dept_name"/> <result property="credits" column="credits"/> <!--每门课程有多个成绩--> <collection property="takesList" ofType="cn.java.bean.Takes"> <id property="id" column="ID"/> <id property="courseId" column="course_id"/> <id property="secId" column="sec_id"/> <id property="semester" column="semester"/> <id property="year" column="year"/> <result property="grade" column="grade"/> </collection> </collection> </resultMap> <select id="getStudGrade" resultMap="StudentCourseTakesMap"> SELECT * FROM student,takes,course WHERE student.`ID`=takes.`ID` AND course.`course_id`=takes.`course_id` </select>  

标签:实体类,多表,定义,查询,course,MyBatis,属性
From: https://www.cnblogs.com/qiqi-yi/p/17276790.html

相关文章

  • 洛谷P3374 【模板】树状数组 1-(单点修改,区间查询)
    题目描述如题,已知一个数列,你需要进行下面两种操作:将某一个数加上 x求出某区间每一个数的和输入格式第一行包含两个正整数 n,m,分别表示该数列数字的个数和操作的总个数。第二行包含 n 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。接下来 ......
  • 洛谷P3368 【模板】树状数组 2-(区间修改,单点查询)
    题目描述如题,已知一个数列,你需要进行下面两种操作:将某区间每一个数加上 x;求出某一个数的值。输入格式第一行包含两个整数 N、M,分别表示该数列数字的个数和操作的总个数。第二行包含 N 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。接下来......
  • 你还在手写 join 联表查询?MyBatis-Plus 这样写太香了!
    使用方法安装Maven<dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join</artifactId><version>1.2.4</version></dependency>Gradleimplementation'com.github.yulic......
  • 【python基础】python字典根据值查询键
    前言 测试>>>tfl_label={'circle_green':0,'circle_red':1,'circle_yellow':2,'left_green':3,'left_red':4,'left_yellow':5,'nomotor_green':6,'nomotor_red':7,......
  • 使用SpringBoot异步方法优化报销单查询接口,提高接口响应速度
    合理使用异步方法可以提高接口性能。异步方法适用于逻辑与逻辑之间可以相互分割互不影响的业务中。SpringBoot支持异步方法调用。具体用法:在启动类添加@EnableAsync注解,声明开启异步方法在异步方法添加@Async注解,被@Async注解修改的方法由SpringBoot默认线程池(SimpleAsyncTas......
  • MyBatis 框架的常用优化方法
    优化1:单独使用MyBatis时,可以封装一个用来获取MyBatis中Session的工具类(1)工具类MybatisUtil将Mybatis框架中的Session对象的获取和关闭封装成一个类;(2)UserDaoImpl中,改为对MybatisUtil类的调用。 优化2:将连接字符串写入配置文件(1)阅读database.prop......
  • MyBatis框架的基本CRUD命令
    1、局部SQL配置文件重要标签说明:作用:把sql语句保存在Mybatis的局部配置文件中,给某个数据访问类使用;根节点为<mapper>…</mapper>;namespace:命名空间,其值为某一个dao层实现类的具体路径,表示这个类要使用相应的SQL语句。这个具体路径不要自己写,可以选中该类,右键,选择“copy......
  • MyBatis参数传递
    MyBatis接口方法中可以接受各种各样的参数,MyBatis底层对于这些参数进行不同的封装处理方式**单个参数:1.POJO类型:2.Map集合:3.Collection:4.List:5.Array:6.其他类型:*多个参数:封装为map集合map.put("arg0",参数......
  • MyBatis 框架基本使用流程
    1、编写Mybatis主配置文件: mybatis.xml中重要标签说明:<!--配置数据库连接环境:driver、url、username、password--><environmentsdefault="mysql">//设置当前要使用的数据库<!--开始配置mysql--><environmentid="mysql">//给当前要使用的数据库环境命名,要唯一<......
  • Java 根据地址查询经纬度
    百度开放平台控制台:https://lbsyun.baidu.com/apiconsole/key#/home经纬度比较网址:https://jingweidu.bmcx.com/1、创建应用 2、写Java服务 /***通过字符串地址获取经纬度*@Author:menghaipeng*@Date:2023/3/3111:31*/publicclassDistanceUtil{......