【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传递查询条件.查询 ...
随机推荐
- 活动预告 | 中国数据库联盟(ACDU)中国行第四站定档西安,邀您探讨数据库前沿技术
作为墨天轮社区与中国数据库联盟的品牌活动之一,[ACDU 中国行]已走过深圳.杭州.成都三大城市,在线下汇集数据库领域的行业知名人士,共同探讨数据库前沿技术及其应用,促进行业发展和创新,同时也为开发者 ...
- SqlUtils 使用
一.前言 随着 Solon 3.0 版本发布,新添加的 SqlUtils 接口,用于操作数据库,SqlUtils 是对 Jdbc 原始接口的封装.适合 SQL 极少或较复杂,或者 ORM 不适合的场景 ...
- Shell简单入门程序参考
目录 0 前言 0.1 shell初试 1 程序功能 1.1 显示当前主机名和IP地址. 1.1.1 if 语句 详解 1.2 创建目录或者文件 1.3 修改文件属性 1.3.1 chmod 修改文件 ...
- Httprunner生成Allure格式HTML报告
一.httprunner v2.x版本的报告 最近组内其他同学使用httprunner做接口自动化,之前没有接触过httprunner,发现httprunner相比pytest和unittest有自己 ...
- ABC365(D,E)
ABC365(D,E) D - AtCoder Janken 3 石头剪刀布,给出对手的出招,问在保证不败的情况下最多能赢多少回 记 \(f_i,{0/1/2}\) 表示第 \(i\) 局出石头/剪刀 ...
- 9-4 vector对象是如何增长的
.size():容器中有多少元素 .capacity():不重新分配内存时,可容纳多少元素 .reserve(n):分配至少能容纳n个元素的内存 n>capacity时会分配使得capacity ...
- 利用腾讯元器,将公众号变身为强大的.NET AI智能体
前言 经常有粉丝朋友在公众号后台私信提问,因为个人平时比较少看公众号后台的私信所以没法及时回复.最近发现腾讯推出了一个可以创建和使用各种智能体的平台(帮助小白也能快速使用AI):腾讯元器,正好自己每天 ...
- ubuntu系统安装wps后语言是英文的问题
如果安装ubuntu系统后,在里面安装wps的时候,发现都是英文,无法切换为中文,可以这样操作. 此时点击这里新建一个word空白文档 点击这里新建文档 点击这里显示语言 点击下面的 简体中文 再点击 ...
- Golang基础库之net/http
Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现. net/http介绍 Go语言内置的net/http包提供了HTTP客户端和服务端的实现. HTTP协议 超文本传输协 ...
- Mybatis【18】-- Mybatis自关联多对一查询方式
注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-14-oneself-many2one,需要自取, ...