mybatis一对多关系的关联查询
问题描述:实现两张表的关联查询
学生表:

班级表:

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

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一对多关系的关联查询的更多相关文章
- [NHibernate]一对多关系(关联查询)
目录 写在前面 文档与系列文章 一对多查询 总结 写在前面 上篇文章介绍了nhibernate的一对多关系如何配置,以及级联删除,级联添加数据的内容.这篇文章我们将学习nhibernate中的一对多关 ...
- MyBatis 一对多,多对一关联查询的时候Mapper的顺序
要先写association,然后写collection:这是由DTD决定的: <resultMap ...> <association ...> </associati ...
- [NHibernate]多对多关系(关联查询)
目录 写在前面 文档与系列文章 多对多关系关联查询 总结 写在前面 上篇文章介绍了nhibernate中对一对多关系进行关联查询的几种方式,以及在使用过程需要注意的问题.这篇文章对多对多关系的查询处理 ...
- [转]NHibernate之旅(11):探索多对多关系及其关联查询
本节内容 多对多关系引入 多对多映射关系 多对多关联查询 1.原生SQL关联查询 2.HQL关联查询 3.Criteria API关联查询 结语 多对多关系引入 让我们再次回顾在第二篇中建立的数据模型 ...
- Mybatis学习总结四(关联查询)
一.一对一查询 实例:查询所有订单信息,关联查询下单用户信息. Method1:使用resultType,定义订单信息po类,此po类中包括了订单信息和用户信息. public class Order ...
- Mybatis框架基础入门(七)--关联查询
1.一对一查询 1.1 使用resultType接收查询结果 修改pojo类 public class OrderUser extends order { private String usernam ...
- mybatis 一对多关系
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...
- hibernate一对多关系 在一方查询会获得重复数据,重复数量就是多端数据数量用@Fetch(FetchMode.SUBSELECT)解决
先来看数据表 版块表只有两个数据 板块1是推荐,下边没有子栏目 板块2下边有14个子栏目 在1的一端来查询,发现结果有16条 也就是板块1+版块2+版块2和他的14个子集都列出来了,这明显不对 板块对 ...
- NHibernate教程(11)--多对多关联查询
本节内容 多对多关系引入 多对多映射关系 多对多关联查询 1.原生SQL关联查询 2.HQL关联查询 3.Criteria API关联查询 结语 多对多关系引入 让我们再次回顾在第二篇中建立的数据模型 ...
随机推荐
- Cesium学习笔记(四)Camera
http://blog.csdn.net/HobHunter/article/details/74909641 Cesium 相机控制场景中的视野.操作相机的方法有很多,如旋转,缩放,平移和飞到目的地 ...
- Sping——使用注解创建切面
为讲解例子,我们首先定义一个Performance接口: package aoptest; public interface Performance { public void perform(); ...
- golang bytes 包
类型 []byte 的切片十分常见,Go 语言有一个 bytes 包专门用来解决这种类型的操作方法. bytes 包和字符串包十分类似.而且它还包含一个十分有用的类型 Buffer: import & ...
- ceph对接openstack环境
环境准备: 保证openstack节点的hosts文件里有ceph集群的各个主机名,也要保证ceph集群节点有openstack节点的各个主机名 一.使用rbd方式提供存储如下数据: (1)image ...
- 逆元Inv(模板+应用)
逆元: 如果满足公式,则有a 是 b的逆元同时b也是a的逆元. 逆元的应用: 设c为b在对m取余的意义下的逆元: 在求解公式 (a / b) % m的时候,如果b可能会非常的大,所以会出现爆精度的问题 ...
- Java 内存模型与线程
when ? why ? how ? what ? 计算机的运行速度和它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O .网络通信或者数据库访问上.如何把处理器的运算能力"压 ...
- Linux - redis持久化RDB与AOF
目录 Linux - redis持久化RDB与AOF RDB持久化 redis持久化之AOF redis不重启,切换RDB备份到AOF备份 确保redis版本在2.2以上 实验环境准备 备份这个rdb ...
- hdu2001 计算两点间的距离【C++】
计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- Java8新特性之forEach遍历
参考文章: https://www.cnblogs.com/billyu/p/6118008.html
- [Bzoj3940] [AC自动机,USACO 2015 February Gold] Censor [AC自动机模板题]
AC自动机模板题(膜jcvb代码) #include <iostream> #include <algorithm> #include <cstdio> #incl ...