关联查询(一对一) 场景:一个作者(Author)有一个博客(Blog) Blog.java public class Blog { private String id;...SELECT * FROM AUTHOR WHERE ID = #{id} 调用BlogMapper.xml中selectBlog 就可以查询关联后的结果...集合查询(一对多) 场景:一个博客(Blog)有多篇文章(Post) Blog.java public class Blog { private String id;...SELECT * FROM POST WHERE BLOG_ID = #{id} 调用BlogMapper.xml中selectBlog就可以查询集合后的结果
blog.csdn.net/qq_37933685/article/details/79947602 个人博客:https://suveng.github.io/blog/ 数据库的表存在多表的关联关系...用的是mysql5.5,ssm框架搭建一个管理系统 我用mybatis-generator生成的pojo和mapper.xml以及mapper等文件,不会自动帮我建立这些关系,这些是需要我自己搞。
一、一对一关联 1.1、提出需求 根据班级id查询班级信息(带老师的信息) 1.2、创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系...DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd...一对一关联查询总结 MyBatis中使用association标签来解决一对一的关联查询,association标签可用的属性如下: property:对象属性的名称 javaType:对象属性的类型...column:所对应的外键字段名称 select:使用另一个查询封装的结果 二、一对多关联 2.1、提出需求 根据classId查询对应的班级信息,包括学生,老师 2.2、创建表和数据 在上面的一对一关联查询演示中...一对多关联查询总结 MyBatis中使用collection标签来解决一对多的关联查询,ofType属性指定集合中元素的对象类型。
1.嵌套结果 比如我们想通过查询一个文章,返回这个文章和这个文章的作者的信息 ...-- 另一种联合查询(一对一)的实现,但是这种方式有“N+1”的问题 --> <!
learn from:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps 关联查询 准备 关联结果查询(一对一) resultMap...复用 集合(一对多) 3 关联查询 做查询之前,先修改几个配置。...这里也是我困惑的地方,为什么mybatis要这样处理,命名可以一次查询取得数据非要两次查询。...所以还有另外一种方法 3.3 关联查询结果 上述关联查询主要是为了延迟加载,做缓存用的,如果你不调用blog.getAuthor()来获取author,那么mybatis就不会去查询Author。...下面,来测试另一种方式,像sql关联查询一样,一次查出结果。
注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-15-oneself-many2many,需要自取,...docsify文档地址在:https://damaer.github.io/Mybatis-Learning/#/ 所谓多对多查询,就是类似于:一个学生可以选多门课程,一门可能可以有多个学生。...} } 定义的接口部分: public interface IStudentDao { Student selectStudentById(int id); } mapper.xml文件,查询的时候...,查的是三张表,通过sid=studentId and cid=courseId and sid=#{xxx}关联起来。...DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis
注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-15-oneself-many2many,需要自取,...docsify文档地址在:https://damaer.github.io/Mybatis-Learning/#/ 所谓多对多查询,就是类似于:一个学生可以选多门课程,一门可能可以有多个学生。...]"; } } 定义的接口部分: public interface IStudentDao { Student selectStudentById(int id); } mapper.xml文件,查询的时候...,查的是三张表,通过sid=studentId and cid=courseId and sid=#{xxx}关联起来。...DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis
注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-13-oneself-one2many,需要自取,需要配置...docsify文档地址在:https://damaer.github.io/Mybatis-Learning/#/ 所谓自关联查询,是指自己既然充当一方,又充当多方。...DB表如下: 查询指定栏目的所有子孙栏目 查询指定目录的所有子孙目录,我们需要使用递归的思想,查出当前栏目之后,需要将当前栏目的id作为下一级栏目的pid。...DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd...里面递归调用另一个sql,最外层的sql只执行一次,这样就可以实现查询自身一次,递归查询子孙栏目的功能: <!
注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-13-oneself-one2many,需要自取,需要配置...docsify文档地址在:https://damaer.github.io/Mybatis-Learning/#/ 所谓自关联查询,是指自己既然充当一方,又充当多方。...DB表如下: [29192b55571a01e02f992bad110400da.png] 查询指定栏目的所有子孙栏目 查询指定目录的所有子孙目录,我们需要使用递归的思想,查出当前栏目之后,需要将当前栏目的...DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd...里面递归调用另一个sql,最外层的sql只执行一次,这样就可以实现查询自身一次,递归查询子孙栏目的功能: <!
---- 一、Mybatis一对一关联查询 查询学生时,将关联的一个班级对象查询出来,就是一对一关联查询。...运行效果 Ok,从运行效果来看确实查询出来每个学生对应的班级了 二、Mybatis一对多关联查询 查询班级时,将关联的学生集合查询出来,就是一对多关联查询。 1....运行效果 OK,观察运行效果,确实是将每个班级对应的学生都查询出来了。 三、Mybatis多对多关联查询 MyBatis多对多关联查询本质就是两个一对多关联查询。...,老师列表是空的,现在如果想查询班级时,将关联的老师集合查询出来,只需要修改班级映射文件的Sql语句和 即可: 1....--如果想查询班级时,将关联的老师集合查询出来,只需要修改班级 映射文件的Sql语句和 即可:--> <resultMap id="classesMapper1" type
背景 本节讲 高级查询。 2.关联查询 2.1 一对一映射:直接将结果写入到关联对象中 场景:一个博客文章一定有一个作者,通过一个 authorId 关联。...mybatis 可以支持这样左连接查询,一次性查出结果,还能将结果集直接写入到关联 的 author 对象中。...mybatis 的 标签 用于在关联关系中描述一个集合。...mybatis 会针对 id 做过滤重复的对象。 从打印的结果可以看到,数据库返回了 3条记录。而 mybatis 进行映射充足后,合并了重复项,list 集合中只有两条。.../mybatis-3/zh/sqlmap-xml.html
mybatis3.0添加了association和collection标签专门用于对多个相关实体类数据进行级联查询,但仍不支持多个相关实体类数据的级联保存和级联删除操作。...因此在进行实体类多对多映射表设计时,需要专门建立一个关联对象类对相关实体类的关联关系进行描述。下文将以“User”和“Group”两个实体类之间的多对多关联映射为例进行CRUD操作。...DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/...DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/...DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org
一、Mybatis一对一关联查询 查询学生时,将关联的一个班级对象查询出来,就是一对一关联查询。...运行效果 Ok,从运行效果来看确实查询出来每个学生对应的班级了 二、Mybatis一对多关联查询 查询班级时,将关联的学生集合查询出来,就是一对多关联查询。 1....新增测试方法// 测试查询一对多关联查询 @Test public void testFindAllClasses(){ ClassesMapper classesMapper...运行效果 OK,观察运行效果,确实是将每个班级对应的学生都查询出来了。 三、Mybatis多对多关联查询 MyBatis多对多关联查询本质就是两个一对多关联查询。...,老师列表是空的,现在如果想查询班级时,将关联的老师集合查询出来,只需要修改班级映射文件的Sql语句和 即可: 1.
我们在查询业务数据的时候经常会遇到关联查询的情况,比如查询员工就会关联部门(一对一),查询学生成绩就会关联课程(一对一),查询订单就会关联商品(一对多),等等。...对于关联查询的这种情况,通常不能用来映射。用映射,要么就是修改dto (Data Transfer Object),在里面增加字段,这个会导致增加很多无关的字段。...要么就是引用关联的对象,比如Blog里面包含了一个Author对象(多对一),这种情况下就要用到关联查询(association,或者嵌套查询),MyBatis 可以帮我们自动做结果的映射。...一对一的关联查询有两种配置方式: 嵌套结果 <!...在MyBatis里面可以通过开启延迟加载的开关来解决这个问题。 延迟加载 在settings标签里面可以配置:
注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-12-many2one,需要自取,需要配置maven...docsify文档地址在:https://damaer.github.io/Mybatis-Learning/#/ 一对多关联查询:每个国家有很多大臣,领导人,现在我们查询一个领导,希望能将他所在国家的信息连带出来...,这就是一对多关联查询。...,一种是嵌套结果,一种是嵌套查询,嵌套查询可以使用懒加载模式,比较常用: <?...DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd
注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-14-oneself-many2one,需要自取,需要配置...docsify文档地址在:https://damaer.github.io/Mybatis-Learning/#/ 现在有个数据库查询需求,给出当前新闻栏目的id,希望查出父辈栏目,父辈的父辈栏目等等信息...(resultMap),resultMap的id是“newsLabelMapper”,“newsLabelMapper”中除了id映射和name映射,还有一个,里面定义的是关联关系定义...select="selectParentByParentId":查询 parent 属性执行的 sql 语句 <!...DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis
注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-14-oneself-many2one,需要自取,需要配置...docsify文档地址在:https://damaer.github.io/Mybatis-Learning/#/ 现在有个数据库查询需求,给出当前新闻栏目的id,希望查出父辈栏目,父辈的父辈栏目等等信息...(resultMap),resultMap的id是“newsLabelMapper”,“newsLabelMapper”中除了id映射和name映射,还有一个,里面定义的是关联关系定义...select="selectParentByParentId":查询 parent 属性执行的语句 <!...DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis
现在有一数据库mybatis,两张数据表 tbl_department ? tbl_employee ?...其中tbl_employee表中的d_id关联tbl_department表中的id字段 Employee.java public class Employee { private Integer...最后进行测试: package com.gong.mybatis.test; import java.io.IOException; import java.io.InputStream; import...getSqlSessionFactory() throws IOException { String resource = "mybatis-config.xml";...gender=0, email=xiaohong@qq.com, dept=Department [id=1, deptName=开发部]] Department [id=1, deptName=开发部] 说明关联查询是成功的
领取专属 10元无门槛券
手把手带您无忧上云