mybatis_映射查询
一、一对一映射查询:
第一种方式(手动映射):借助resultType属性,定义专门的pojo类作为输出类型,其中该po类中封装了查询结果集中所有的字段。此方法较为简单,企业中使用普遍。

<!--
【手动映射:】
查询用户和用户所属的订单信息:
定义一个包含用户和订单实体的所有属性的全pojo类,将查询结果中的所有字段和全pojo类中的属性相对应。
-->
<select id="findUserAndOrders1" resultType="com.itheima.mybatis.pojo.OrdersAnduser">
select o.*,u.id uid,u.username,u.address,u.birthday
from user u,orders o
where u.id=o.user_id
</select>
第二种方式(自动映射):借助resultMap属性,定义专门的resultMap用于映射一对一查询结果。
以用户订单关联关系为例,一个订单只能所属一个用户(一对一查询)

<!--
type:表示返回的数据类型
id:表示resultMap的唯一标识
-->
<resultMap type="com.itheima.mybatis.pojo.Orders" id="OrdersUserResultMap">
<!-- 主键列对应的实体类中的唯一属性 -->
<id column="id" property="id"/>
<!-- 普通列对应实体类中的普通属性 -->
<result column="user_id" property="userId"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/>
<!-- association表示进行关联查询的实体映射
property:表示被关联对象在查询对象中的属性民称
javaType:表示被关联对象的全路径名称
-->
<association property="user" javaType="com.itheima.mybatis.pojo.User">
<id column="uid" property="id"/>
<result column="username" property="username"/>
<result column="gender" property="gender"/>
<result column="birthday" property="birthday"/>
<result column="address" property="address"/>
</association>
</resultMap>
<!--
【自动映射:】
使用resultMap,封装一对一映射关系:
在orders订单类配置User对象,一个订单只能所属一个用户。
-->
<select id="findUserAndOrders2" resultMap="OrdersUserResultMap">
select o.*,u.id uid,u.username,u.address,u.birthday
from user u,orders o
where u.id=o.user_id
</select>
二、一对多映射查询:
只能使用手动映射, 在resultMap中可以使用collection标签来标记对集合对象的关系映射。
以用户订单关联关系为例,一个用户可以有多个订单(一对多查询)

<!-- 一对多映射: -->
<select id="findUserAndOrders3" resultMap="UserOrdersResultMap">
select u.*,o.id oid,o.createtime,o.number
from user u,orders o
where u.id=o.user_id
</select>
<!--
type:表示返回的数据类型
id:表示resultMap的唯一标识
-->
<resultMap type="com.itheima.mybatis.pojo.User" id="UserOrdersResultMap">
<id column="oid" property="id"/>
<result column="username" property="username"/>
<result column="gender" property="gender"/>
<result column="birthday" property="birthday"/>
<result column="address" property="address"/>
<!--
collection:表示关联查询的结果集
property:关联查询的结果集存储在User对象的上的哪个属性
ofType:表示返回集合中的数据类型
-->
<collection property="ordersList" ofType="com.itheima.mybatis.pojo.Orders">
<id column="id" property="id"/>
<result column="user_id" property="userId"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/>
</collection>
</resultMap>
mybatis_映射查询的更多相关文章
- MyBatis高级映射查询(3)
一.数据库数据和项目搭建过程 1.主要要四张表,分别为user用户信息表.items商品表.orderdetail订单明细表.orders订单表.表的结构和数据如下: 表结构 CREATE DATAB ...
- FreeSql (二十二)Dto 映射查询
适合喜欢使用 dto 的朋友,很多时候 entity 与 dto 属性名相同,属性数据又不完全一致. 有的人先查回所有字段数据,再使用 AutoMapper 映射. 我们的功能是先映射,再只查询映射好 ...
- hibernate里联合主键composite-id映射,查询单个主键的问题
今天项目中遇到这个问题,搞了大半天,现在记录下来hibernate里联合主键配置(多个字段一起作为主键) <class name="com.cskj.hibernate.map.BbW ...
- Mybatis_映射文件_Select
一.Select元素来定义查询操作 Id:唯一标识符.用来引用这条SQL语句,需要和接口的方法名一致 parameterType:参数类型.可以不传,MyBatis会根据TypeHandler自动推断 ...
- SpringData JPA进阶查询—JPQL/原生SQL查询、分页处理、部分字段映射查询
上一篇介绍了入门基础篇SpringDataJPA访问数据库.本篇介绍SpringDataJPA进一步的定制化查询,使用JPQL或者SQL进行查询.部分字段映射.分页等.本文尽量以简单的建模与代码进行展 ...
- gin中映射查询字符串或表单参数
package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { r := gin. ...
- MyBatis_关联关系查询
一.关联查询 当查询的内容涉及到具有关联关系的多个表时,就需要使用关联查询.根据表与表间的关联关系的不同.关联查询分为四种: 一对一关联查询: 一对多关联查询: 多对一关联查询: 多对多关联查询: 二 ...
- MyBatis_多查询条件问题
一.多查询条件无法整体接收问题的解决 在实际工作中,表单中所给出的查询条件有时是无法将其封装成一个对象,即查询方法只能携带多个参数,而不能携带将这多个参数进行封装的一个对象.对于这个问题,有两种解决方 ...
- Django中的ORM关系映射查询方面
ORM:Object-Relation Mapping:对象-关系映射 在MVC框架中的Model模块中都包括ORM,对于开发人员主要带来了如下好处: 实现了数据模型与数据库的解耦,通过简单的配置就可 ...
随机推荐
- C# 注册 Windows 热键
闲扯: 前几日,一个朋友问我如何实现按 F1 键实现粘贴(Ctrl+V)功能,百度了一个方法,发给他,他看不懂(已经是 Boss 的曾经的码农),我就做了个Demo给他参考.今日得空,将 Demo 整 ...
- Android数据存储之Android 6.0运行时权限下文件存储的思考
前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- “fixed+relative==absolute”——对BFC的再次思考
好久没写博客了,刚好今天跨年夜没约到什么妹子,在家宅着不如写点东西好了. 需求 昨天晚上,给公司年会做一个移动端的投票页面,遇到一个UI优化的问题: · 正文内容少于一屏时,投票提交按钮固定显示在页面 ...
- windows环境redis主从安装部署
准备工作 下载windows环境redis,我下载的是2.4.5,解压,拷贝一主(master)两从(slaveof).主机端口使用6379,两从的端口分别为6380和6381, 我本地索性用6379 ...
- 那些年【深入.NET平台和C#编程】
一.深入.NET框架 1..NET框架具有两个组件:CLR(公共语言运行时)和FCL(框架类库),CLR是.NET框架的基础 2.框架核心类库: System.Collections.Generic: ...
- 【转】java通用URL接口地址调用方式GET和POST方式
java通用URL接口地址调用方式GET和POST方式,包括建立请求和设置请求头部信息等等......... import java.io.ByteArrayOutputStream; import ...
- java中的内部类
/** * 内部类 ?? * 定义在一个内部的类,被称为内部类. * 内部类里有类体,方法体 * 内部类所在的类,被称为外部类. * --------------------------------- ...
- css样式之background详解
background用法详解: 1.background-color 属性设置元素的背景颜色 可能的值 color_name 规定颜色值为颜色名称的背景颜色(比如 red) he ...
- 流程表单中js如何清空SheetUser控件数据?
昨天有人问我js怎么清空.我试了试,发现简单的赋给他空值,并没有用.只能给他赋一个真实存在的值才有用.于是跟踪了一下他的删除按钮. 效果如下 使用场景:可以根据字段的不同类别变更人员. js代码如下, ...