问题描述:实现两张表的关联查询

学生表:

班级表:

要实现学生管理信息中有所在班级的名称,即如下图所示

1.对应学生表的pojo类写全班级表中的字段(适用于要连接的表字段较少的情况)

sql语句直接在mapper接口里用注解的方式写就可以了,一目了然

2.使用resultmap手动关联映射

student的pojo类写一个Clazz类型的字段,封装班级信息

然后用xml的方式写sql语句,在写sql语句之前我们要在配置文件里声明xml的路径,以及为了方便,为pojo类起别名

    <resultMap id="smap" type="student">
<id property="id" column="sid"/>
<result property="name" column="name"/>
<result property="phone" column="phone"/>
<association property="clazz" javaType="clazz">
<id property="id" column="cid"/>
<result property="title" column="title"/>
</association>
</resultMap> <select id="selectAll" resultMap="smap">
select s.id sid,s.name,s.phone,c.id cid,c.title title
from student s left join clazz c on s.clazz_id=c.id
</select>

associattion 是关系,代表一个学生对象中包含有一个班级对象,javaType 属性表示当前对象

3.使用resultType自动映射配合别名实现

这种方式是最简易的,但是要注意别名因为包含特殊符号,我们需要加上引号

效果图

另外还有N+1方式,那样是写两条sql语句,resultMap中关联(association)另外一个对象的语句

(N+1模式案例:Mybatis关联查询)

还有在业务层中处理逻辑,即先用一条sql语句

select * from student

查询出学生集合,通过学生的班级Id去调用

select * from clazz where id=#{id}

查询出对应的班级信息,再遍历学生集合封装到student对象中

mybatis一对多关系的关联查询的更多相关文章

  1. [NHibernate]一对多关系(关联查询)

    目录 写在前面 文档与系列文章 一对多查询 总结 写在前面 上篇文章介绍了nhibernate的一对多关系如何配置,以及级联删除,级联添加数据的内容.这篇文章我们将学习nhibernate中的一对多关 ...

  2. MyBatis 一对多,多对一关联查询的时候Mapper的顺序

    要先写association,然后写collection:这是由DTD决定的: <resultMap ...> <association ...> </associati ...

  3. [NHibernate]多对多关系(关联查询)

    目录 写在前面 文档与系列文章 多对多关系关联查询 总结 写在前面 上篇文章介绍了nhibernate中对一对多关系进行关联查询的几种方式,以及在使用过程需要注意的问题.这篇文章对多对多关系的查询处理 ...

  4. [转]NHibernate之旅(11):探索多对多关系及其关联查询

    本节内容 多对多关系引入 多对多映射关系 多对多关联查询 1.原生SQL关联查询 2.HQL关联查询 3.Criteria API关联查询 结语 多对多关系引入 让我们再次回顾在第二篇中建立的数据模型 ...

  5. Mybatis学习总结四(关联查询)

    一.一对一查询 实例:查询所有订单信息,关联查询下单用户信息. Method1:使用resultType,定义订单信息po类,此po类中包括了订单信息和用户信息. public class Order ...

  6. Mybatis框架基础入门(七)--关联查询

    1.一对一查询 1.1 使用resultType接收查询结果 修改pojo类 public class OrderUser extends order { private String usernam ...

  7. mybatis 一对多关系

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  8. hibernate一对多关系 在一方查询会获得重复数据,重复数量就是多端数据数量用@Fetch(FetchMode.SUBSELECT)解决

    先来看数据表 版块表只有两个数据 板块1是推荐,下边没有子栏目 板块2下边有14个子栏目 在1的一端来查询,发现结果有16条 也就是板块1+版块2+版块2和他的14个子集都列出来了,这明显不对 板块对 ...

  9. NHibernate教程(11)--多对多关联查询

    本节内容 多对多关系引入 多对多映射关系 多对多关联查询 1.原生SQL关联查询 2.HQL关联查询 3.Criteria API关联查询 结语 多对多关系引入 让我们再次回顾在第二篇中建立的数据模型 ...

随机推荐

  1. c#遍历注册表

    --来自 https://blog.csdn.net/wenchangren/article/details/751863using System; using Microsoft.Win32; us ...

  2. 吐得了,vue的多选组合框回显必须是字符串集合

    下面这个typeIdList,如果给他赋值,就能回显到页面,但是必须是字符串的集合,如果是数值类型的id,不好意思,请转成字符串

  3. plsql developer连接oracle数据库

    1.下载安装PLSQL Developer12 访问PLSQL Developer官网https://www.allroundautomations.com/bodyplsqldevreg.html, ...

  4. Asp.Mvc 常用

    url转义 var address = "http://www.cnblog.com"; var a22 = Uri.EscapeDataString(address); var ...

  5. Unity jointmoto

    jointmoto是模拟电机的,他的参数包括了最高车速和最大扭矩 扭矩总是正数,而目标车速决定了方向

  6. 第九节:numpy之随机数组及随机排列

  7. 第十五节:pandas之concat()级联

    Pandas 提供了concat()函数可以轻松的将Series.DataFrame对象进行合并在一起. pandas.concat(obj , axis=0 , join="inner&q ...

  8. 【模板】非旋转Treap

    Treap,也叫做树堆,是指有一个随机附加域满足堆的性质的二叉搜索树. 如果一棵二叉搜索树插入节点的顺序是随机的,那我们得到的二叉搜索树在大多数情况下是平衡的,期望高度是log(n). 但有些情况下我 ...

  9. 清北学堂模拟赛d3t3 c

    分析:一开始拿到这道题真的是无从下手,暴力都很难打出来.但是基本的方向还是要有的,题目问的是方案数,dp不行就考虑数学方法.接下来比较难想.其实对于每一行或者每一列,我们任意打乱顺序其实对答案是没有影 ...

  10. POJ 3311

    设dp状态为dp[i][j]为当前访问过的结点状态为i且当前停留点为j时的最短路径.用二进制存存储访问过的状态,访问过为1,否则为0. #include <iostream> #inclu ...