【MyBatis】学习笔记12:通过级联属性赋值解决多对一的映射关系
【MyBatis】学习笔记03:配置文件进一步解读(非常重要)
【MyBatis】学习笔记06:各种查询所返回数据的数据类型
Mybatis12:通过级联属性赋值解决多对一的映射关系



Way01:级联属性赋值
//查询商品以及商品对应的供应商
public SmbmsBill getBillAndProvider(@Param("bid") String bid);
<!-- public SmbmsBill getBillAndProvider(@Param("bid") String bid);-->
<resultMap id="BillAndProviderMapOne" type="SmbmsBill">
<id property="id" column="id"/>
<!-- property里面写的是对象的属性字段,column里面写的是数据库中的列名-->
<result property="productName" column="productName"/>
<result property="billCode" column="billCode"/>
<result property="totalPrice" column="totalPrice"/>
<result property="isPayment" column="isPayment"/>
<result property="provider.id" column="providerId"/>
<result property="provider.proCode" column="proCode"/>
<result property="provider.proName" column="proName"/>
<result property="provider.proContact" column="proContact"/>
<result property="provider.proPhone" column="proPhone"/>
</resultMap>
<select id="getBillAndProvider" resultMap="BillAndProviderMapOne">
select * from smbms_bill left join smbms_provider on smbms_bill.providerId=smbms_provider.id
where smbms_bill.id=#{bid}
</select>

Way02:association
association:处理多对一的映射关系
property:需要处理多对一的映射关系的属性名
javaType:该属性的类型(对象)
<!-- public SmbmsBill getBillAndProvider(@Param("bid") String bid);-->
<resultMap id="BillAndProviderMapOne" type="SmbmsBill">
<id property="id" column="id"/>
<!-- property里面写的是对象的属性字段,column里面写的是数据库中的列名-->
<!-- 处理的是属性和字段的映射关系 -->
<result property="productName" column="productName"/>
<result property="billCode" column="billCode"/>
<result property="totalPrice" column="totalPrice"/>
<result property="isPayment" column="isPayment"/>
<association property="provider" javaType="SmbmsProvider">
<id property="id" column="id"/>
<result property="proCode" column="proCode"/>
<result property="proName" column="proName"/>
<result property="proContact" column="proContact"/>
<result property="proPhone" column="proPhone"/>
</association>
</resultMap>
<select id="getBillAndProvider" resultMap="BillAndProviderMapOne">
select * from smbms_bill left join smbms_provider on smbms_bill.providerId=smbms_provider.id
where smbms_bill.id=#{bid}
</select>

Way03:分步查询
【interface】orderMapper.java
/**
* 分布查询:查询商品和对应的供应商信息
* 分步查询第一步:查询商品信息
*
*/
public SmbmsBill getBillAndProviderStepOne(@Param("bid") String bid);
【interface】providerMapper.java
/**
* 分布查询:查询商品和对应的供应商信息
* 分步查询第一步:查询商品信息
*分步查询第二步:查询供应商信息
*/
public SmbmsBill getBillAndProviderStepTwo(@Param("pid") String pid);
orderMapper.xml
<!-- 【多表联结】分步查询-->
<resultMap id="BillAndProviderMapOne" type="SmbmsBill">
<result property="productName" column="productName"/>
<result property="billCode" column="billCode"/>
<result property="totalPrice" column="totalPrice"/>
<result property="isPayment" column="isPayment"/>
<!--下方的select设置的是分布查询的sql的唯一标识(namespace.SQLId或napper接口的 全类名/方法名)-->
<association property="provider" select="cc.mllt.jdbc.utils.providerMapper.getBillAndProviderStepTwo" column="providerId"/>
<!--上面的colum设置的分步查询的条件,也就是第二步查询的语句要查哪一句-->
</resultMap>
<!-- public SmbmsBill getBillAndProviderStepOne(@Param("bid") String bid);-->
<select id="getBillAndProviderStepOne" resultMap="BillAndProviderMapOne">
<!-- select productName '商品名称',totalPrice '订单金额',isPayment '是否付款' from smbms_bill where id=#{bid}-->
select * from smbms_bill where id=#{bid}
</select>
providerMapper.xml
<!-- public SmbmsBill getBillAndProviderStepTwo(@Param("pid") String pid);-->
<select id="getBillAndProviderStepTwo" resultType="SmbmsProvider">
<!--select proCode '供应商编码',proName '供应商名称',proContact '供应商联系人',proPhone '供应商联系电话' from smbms_provider where id=#{pid}-->
select * from smbms_provider where id=#{pid}
</select>

<association property="provider" select="cc.mllt.jdbc.utils.providerMapper.getBillAndProviderStepTwo" column="providerId"/>中,select快速获取的方式

【MyBatis】学习笔记12:通过级联属性赋值解决多对一的映射关系的更多相关文章
- Mybatis学习笔记12 - 动态sql之choose(when otherwise)标签
choose (when, otherwise):分支选择:带了break的swtich-case 示例代码: 接口定义: package com.mybatis.dao; import com.my ...
- mybatis 学习笔记(四):mybatis 和 spring 的整合
mybatis 学习笔记(四):mybatis 和 spring 的整合 尝试一下整合 mybatis 和 spring. 思路 spring通过单例方式管理SqlSessionFactory. sp ...
- mybatis 学习笔记(一):mybatis 初认识
mybatis 学习笔记(一):mybatis 初认识 简介 MyBatis是一个Java持久层框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来.mybatis 可以将 prepar ...
- Ext.Net学习笔记12:Ext.Net GridPanel Filter用法
Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ...
- Mybatis学习笔记(二) 之实现数据库的增删改查
开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...
- MyBatis:学习笔记(3)——关联查询
MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统, ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)
文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...
- mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)
下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...
- Mybatis学习笔记二
本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询 ...
随机推荐
- USB2.0设备的休眠挂起及远程唤醒
USB可见设备状态,分为连接(Attached),上电(Powered),默认(Default),地址(Address),配置(Configured)和挂起(Suspended)6个状态.所谓可见,即 ...
- USB gadget驱动框架(六)
本节主要介绍udc驱动枚举过程,需结合udc驱动.composite.c.function等一同分析整个过程. udc驱动中断处理函数 当host检测到DP上拉,则认为有新的device插入,此时ho ...
- v-model 语法糖-在父子组件传值 的简写形式
props的变量名字 必须是 value ,this.$emit('input',数据值) 的自定义事件必须是 input : v-model 是 vue 中进行数据双向绑定的指令,在内部实际上是通 ...
- 静态库封装之ComStr类
ComStr.h #pragma once #include <string> #include <vector> using namespace std; class Com ...
- KubeSphere 边缘节点 IP 冲突的分析和解决思路分享
在上一篇监控问题排查的文章中,笔者分析了 KubeSphere 3.1.0 集成 KubeEdge 中的边缘监控原理和问题排查思路,在介绍 EdgeWatcher 组件时提到了"边缘节点的内 ...
- Java高并发关于synchronized的8锁讲解
先了解一个概念:synchronized 锁的是这个方法所在的资源类,就是这个对象,也就是同一时间段不可能有两个线程同时进到这个资源类,同一时间段,只允许有一个线程访问资源类里面的其中一个synchr ...
- C语言实战项目——学生试卷分数统计
1.题目要求 作为教师,考试以后对试卷进行分析和研究是必须做的一项工作,假定某学校要求老师在考试之后填写的一个表格,并要求教师根据考试分数分布情况画出直方图.下面就来解决这个实际问题. 2.题目分析 ...
- TextIn ParseX文档解析SDK工具新增Java版本
TextIn ParseX通用文档解析是一款大模型友好的解析工具,支持将pdf文档.jpg.img图像等文件快速转换为markdown格式,支持各类表格.公式解析,帮助大语言模型的数据清洗和文档问答任 ...
- HAL+CubeIDE,输入输出重定向
①将以下代码段复制到usart.c里: /******************************************************************************* ...
- vue2-基础核心
vue简介 vue中文官网 动态构建用户界面的渐进式 JavaScript 框架 vue的特点: 遵循MVVM模式 采用组件化模式,提高代码复用率,让代码更好维护 声明式编码,无需直接操作DOM,提高 ...