mybatis关联查询基础----高级映射
本文链接地址:mybatis关联查询基础----高级映射(一对一,一对多,多对多)



1.1相对来说一对一就比较简单学生表通过学号和学生信息表关联

注意:如果主表和关联表有字段重复,则需要查询语句中起别名,将别名写入在column属性中,因为起别名是对数据库字段起的别名,所以要写在数据库所对应的的字段上,别名自动就和实体类对应了。

当关联查询的时候需要分成两种情况,分页和不分页
2.1一对多不分页(写法和一对一一样只是将association 标签换成了collection )
<resultMap id="BaseResultMap" type="com.qike.coldKu.entity.Student">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="num" property="num" jdbcType="INTEGER"/>
<!--一对一-->
<association property="studentInfo" javaType="com.qike.coldKu.entity.StudentInfo">
<result column="id" property="id" jdbcType="INTEGER"/>
<result column="age" property="age" jdbcType="INTEGER"/>
<result column="phone" property="phone" jdbcType="VARCHAR"/>
<result column="stuNum" property="stuNum" jdbcType="VARCHAR"/>
</association>
<!--一对多不分页-->
<collection property="stuGradeList" ofType="com.qike.coldKu.entity.StuGrade" >
<result column="stuNum" property="stuNum" jdbcType="VARCHAR"/>
<result column="Chinese" property="Chinese" jdbcType="VARCHAR"/>
<result column="mathematics" property="mathematics" jdbcType="VARCHAR"/>
</collection>
</resultMap>
2.2一对多分页(如果关联查询涉及到分页,则需要用到myBatils的一种映射规则)
当用分页插件PageHelper.startPage(pageCurrent,pageSize);进行分页时用第一种方式发现返回的数据变少了,前言中大体提了下原因,下面写一下具体的解决方式:
<resultMap id="BaseResultMap" type="com.qike.coldKu.entity.Student">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="num" property="num" jdbcType="INTEGER"/>
<!--一对一-->
<association property="studentInfo" javaType="com.qike.coldKu.entity.StudentInfo">
<result column="id" property="id" jdbcType="INTEGER"/>
<result column="age" property="age" jdbcType="INTEGER"/>
<result column="phone" property="phone" jdbcType="VARCHAR"/>
<result column="stuNum" property="stuNum" jdbcType="VARCHAR"/>
</association>
<!--一对多不分页-->
<collection property="stuGradeList" ofType="com.qike.coldKu.entity.StuGrade" >
<result column="stuNum" property="stuNum" jdbcType="VARCHAR"/>
<result column="Chinese" property="Chinese" jdbcType="VARCHAR"/>
<result column="mathematics" property="mathematics" jdbcType="VARCHAR"/>
</collection>
<!--一对多分页 这个地方没有属性的映射了 select指的是映射执行查询的名字 column指的是传参-->
<collection property="coldkuExpands" ofType="com.qike.coldKu.entity.ColdkuExpand" select="queryList" column="num">
</collection>
</resultMap>
sql写法
<select id="queryUserInfo" resultMap="BaseResultMap">
select a.name as name,a.num from student as a
</select>
<select id="queryStuGrade" resultType="com.qike.coldKu.entity.StuGrade" parameterType="int">
select * from StuGrade where stuNum = #{num}
</select>
mybatis关联查询基础----高级映射的更多相关文章
- MyBatis基础:MyBatis关联查询(4)
1. MyBatis关联查询简介 MyBatis中级联分为3中:association.collection及discriminator. ◊ association:一对一关联 ◊ collecti ...
- MyBatis关联查询、多条件查询
MyBatis关联查询.多条件查询 1.一对一查询 任务需求; 根据班级的信息查询出教师的相关信息 1.数据库表的设计 班级表: 教师表: 2.实体类的设计 班级表: public class Cla ...
- mybatis 关联查询实现一对多
场景:最近接到一个项目是查询管理人集合 同时每一个管理人还存在多个出资人 要查询一个管理人列表 每个管理人又包含了出资人列表 采用mybatis关联查询实现返回数据. 实现方式: 1 .在实体 ...
- MyBatis关联查询和懒加载错误
MyBatis关联查询和懒加载错误 今天在写项目时遇到了个BUG.先说一下背景,前端请求更新生产订单状态,后端从前端接收到生产订单ID进行查询,然后就有问题了. 先看控制台报错: org.apache ...
- Mybatis关联查询和数据库不一致问题分析与解决
Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不 ...
- MyBatis关联查询,一对多关联查询
实体关系图,一个国家对应多个城市 一对多关联查询可用三种方式实现: 单步查询,利用collection标签为级联属性赋值: 分步查询: 利用association标签进行分步查询: 利用collect ...
- Mybatis关联查询之二
Mybatis关联查询之多对多 多对多 一.entity实体类 public class Student { private Integer stuid; private String stuname ...
- mybatis入门基础----高级映射(一对一,一对多,多对多)
阅读目录 一:订单商品数据模型 二.一对一查询 三.一对多查询 四.多对多查询 回到顶部 一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码: CREATE TABLE items ( id ...
- MyBatis关联查询 (association) 时遇到的某些问题/mybatis映射
先说下问题产生的背景: 最近在做一个用到MyBatis的项目,其中有个业务涉及到关联查询,我是将两个查询分开来写的,即嵌套查询,个人感觉这样更方便重用: 关联的查询使用到了动态sql,在执行查询时就出 ...
随机推荐
- for循环中的变量泄漏
经典的案例 let arr = [] for(var i =0;i<=5;i++){ arr[i]= function fn(){ console.log(i) } } arr[0]() //6 ...
- setsockopt()用法及参数详解
setsockopt()用法(参数详细说明) int setsockopt(SOCKET s,int level,int optname,const char* optval,int optlen); ...
- [BUUCTF]REVERSE——简单注册器
简单注册器 附件 步骤: apk文件,直接用apkide打开 去找反编译后的文件,反编译后的语言并没有看大懂,网上百度后找到了一个反编的神器jeb,下载地址 用它反编译后按tab,就能看懂代码了,搜索 ...
- [BUUCTF]REVERSE——不一样的flag
不一样的flag 附件 步骤 例行查壳儿,32位程序,无壳儿 32位ida载入,shift+f12检索程序里的字符串,看到了如图标记的字符串,加上下面又上下左右的选项,估计是道迷宫类型的题目 将迷宫字 ...
- 例外日期(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 日历无论怎么样自定义,只要仍是存在固化规律的,就铁定会坏事,因为人类的历史就是在大规律中掺杂着无数无规律,再由无数无规律凝 ...
- 有个奇怪的问题,配置成/system/index,jsp页面时没有经过过滤器进行拦截,而配置成redirectAction时是可以直接跳转刀片loginJsp.action
有个奇怪的问题,配置成/system/index,jsp页面时没有经过过滤器进行拦截,而配置成redirectAction时是可以直接跳转刀片loginJsp.action 但是我直接访问/syste ...
- Chrome的强大搜索功能
前言 前几天一个好朋友求助我,大概问题是他的电脑QQ啥都能上网,就浏览器上不了网不是IE而是chrome,我第一反应可能是dns问题.后来发甩过来一张图,好家伙把我吓得,类似于下面这张图 这图是我自己 ...
- OnZoom 基于Apache Hudi的流批一体架构实践
1. 背景 OnZoom是Zoom新产品,是基于Zoom Meeting的一个独一无二的在线活动平台和市场.作为Zoom统一通信平台的延伸,OnZoom是一个综合性解决方案,为付费的Zoom用户提供创 ...
- 【LeetCode】598. Range Addition II 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 获得MATLAB中FIG文件的矩阵
在拓扑优化中,经常使用imagesc函数来显示最终的结果,往往会保存了Fig文件,却忘记保存mat文件. 根据已有的Fig文件,是可以找到其所显示矩阵.这个是我从fig数据结构中一层一层找到的,记录一 ...