N+1查询方式
[1]什么是N+1的查询方式
如果没有N+1的方式我们想要实现多表的查询,自己书写查询的业务逻辑代码(java)
mybatis希望通过自己标签配置的方式来解决这个问题
[2]执行的操作
查询学生所在班级的信息(一对一)
查询班级中所有学生的信息(一对多)
使用的时候书写标签需要注意:
查询出来返回的是一个对象:association
查询出来返回的是一个集合:collection

总结: 业务装配方式和N+1查询方式共同点:执行SQL语句的条数上都是N+1条语句不同点:业务装配方式:是我们自己书写java代码的方式进行配置的N+1方式:通过MyBatis标签配置的方式实现的

接口
StudentMapper.java

public interface StudentMapper {//查询所有学生的操作List<Student>  selectAll();List<Student>  selectMore(int clazzno);
}

ClazzMapper.java

public interface ClazzMapper {//查询指定学生所在班级的信息Clazz  selectOne(int clazzno);//查询所有班级信息List<Clazz>  selectAll();
}

XML
StudentMapper.xml

    <select id="selectAll"  resultMap="rm1">SELECT  * from   student</select><resultMap id="rm1" type="student"><!--column:数据库的列名  property:实体的属性名--><!--如果数据库的列明和实体类中的属性名一致,就可以省去该标签但是公共字段不建议省去--><id column="sid" property="sid"></id><result column="sname" property="sname"></result><result column="clazzno" property="clazzno"></result><!--select *  from clazz  where clazzno=?select:执行哪一个方法column:希望查询的哪一列作为参数进行传递javaType:返回值类型property:把返回的结果赋值给对象中哪一个属性--><association  select="com.bjsxt.mapper.ClazzMapper.selectOne"column="clazzno" javaType="clazz" property="cla"></association></resultMap>

ClazzMapper.xml

    <select id="selectAll" resultMap="rm1">SELECT  *  from  clazz</select><resultMap id="rm1" type="clazz"><id column="clazzno" property="clazzno"></id><result column="cname" property="cname"></result><!--select:调用哪一个xml中方法column:希望那一列作为参数进行传递ofType:集合的泛型property:把返回的数据整体赋值给哪一个属性--><collection  select="com.bjsxt.mapper.StudentMapper.selectMore"column="clazzno" ofType="student"  property="li"></collection></resultMap>

测试

        //[4]执行方法StudentMapper stuMapper = sqlSession.getMapper(StudentMapper.class);ClazzMapper  claMapper = sqlSession.getMapper(ClazzMapper.class);//查询所有学生所在的班级的信息/*List<Student> list = stuMapper.selectAll();for(Student  stu:list){System.out.println(stu);}*///查询所有班级中学生的信息List<Clazz> list = claMapper.selectAll();for(Clazz  clazz:list){System.out.println(clazz);}

MyBatis中多表查询(N+1方式)相关推荐

  1. MyBatis中多表查询(多表查询语句实现)重点

    –查询所有学生所在班级的信息(一对一) –班级查询学生的操作(一对多) –遇到的问题: 查询的SQL语句非常的简单,但是如何把查询的数据接受这个就是一个问题 [1]把每一个实体中的字段拿出来组建成一个 ...

  2. MyBatis中多表查询(业务代码方式)

    业务代码的方式 (实现的方式,书写业务逻辑的java代码实现) ------查询学生所在班级的信息 (一对一查询) 1.先把所有学生查询出来(clazzno) select* from student ...

  3. 【Mybatis】MyBatis 实现多表查询

    大纲 Auto Mapping 单表实现(别名方式) <resultMap>实现单表配置 单个对象关联查询(N+1,外连接) 集合对象关联查询 注解开发 MyBatis 运行原理 准备:创 ...

  4. MyBatis 实现多表查询、resultMap 标签、MyBatis 注解、mybatis运行原理

    内容 Auto Mapping 单表实现(别名方式) 实现单表配置 单个对象关联查询(N+1,外连接) 集合对象关联查询 注解开发 MyBatis 运行原理 一.MyBatis 实现多表查询 Myba ...

  5. 【MyBatis】多表查询

    MyBatis的多表查询 表之间的关系:一对多,多对一,一对一,多对多. 一对多:一个班级对应多个学生 多对一:多个学生对应一个班级 一对一:一个人对应一个身份证号码 多对多:一个订单可以有多个商品, ...

  6. MyBaties中多表查询及数据库左连接、右连接、内连接、全连接笔记

    本文最终目的是介绍MyBaties中多表查询方法,最难的就是多对多的查询方式,在此之前咱们先一起复习一下数据库的两表间的连接方式. 数据库表连接方式 数据库两个表之间有四种连接方式,其中包括左连接.右 ...

  7. mybatis一对多关联查询两种方式

    mybatis一对多关联查询两种方式 前提: 方式一: 方式二: 前提: 现在有两张表,学生表跟教师表,一个教师对应多个学生 教师表: CREATE TABLE `teacher` (`id` int ...

  8. Mybatis连3表查询数据resultMap结果映射

    Mybatis连结3表查询数据resultMap结果映射 一.前言 Mybatis实现了sql与java代码的分离,达到了解耦合的目的,配置sql语句时有个resultType="" ...

  9. php多表数据排除,thinkphp中多表查询中防止数据重复的sql语句(必看)

    thinkphp中多表查询中防止数据重复的sql语句(必看) 这里有新鲜出炉的精品教程,程序狗速度看过来! ThinkPHP 开源 PHP 框架 ThinkPHP 是一个开源的 PHP 框架,是为了简 ...

最新文章

  1. ubuntu系统安装FTP
  2. 一个供应商只允许一个报价单
  3. mysql 写 性能,MySQL在大型,只写表上的性能
  4. C# 监控统计 程序执行 时间
  5. 解决webpack打包后-webkit-box-orient: vertical ;消失问题
  6. oracle 数字类型行转列,oracle行转列
  7. 接口测试--自定义断言设置
  8. 我是个老爸--当局者迷,旁观者清
  9. 回调函数的原理及PHP实例
  10. laravel 5 : Class 'input' not found
  11. 天锐绿盾屏幕水印追溯设置,精准追踪文档流转
  12. wm java 载入jad错误_jad文件的错误代码,分享
  13. 税控数据接口之XML接口导入
  14. Ubuntu 16.04 安装iNode客户端
  15. 2021kali系列 -- 破解无线密码
  16. 大明湖畔的正则表达式,你还记得么?
  17. md格式的文档转化成pdf格式
  18. 2021年遥感类SCI期刊中科院分区排名与影响因子汇总
  19. 喜欢听音乐CD的请进:[技术贴]介绍APE+CUE格式的音乐文件
  20. 2020北大信科计算机考研公示,2020年北京大学信息科学技术学院硕士研究生拟录取名单.pdf...

热门文章

  1. JVM(3)——JVM类加载器
  2. P1020 [NOIP1999 普及组] 导弹拦截 Dilworth定理 + dp
  3. bzoj4025-二分图【线段树分治,并查集】
  4. jzoj3738-[NOI2014模拟7.11]理想城市(city)【树,模型转换】
  5. P1445-[Violet]樱花【数学】
  6. USACO2.4のP1519-穿越栅栏(Overfencing)【bfs】
  7. L. Mod(预处理+分块)
  8. 【bfs】神殿(jzoj 2296)
  9. 【拓扑排序】【DP】旅行计划(luogu 1137)
  10. [POI2015] Pustynia(差分约数,线段树优化建图,拓扑)