【Mybatis】学习笔记01:连接数据库,实现增删改

【Mybatis】学习笔记02:实现简单的查

【MyBatis】学习笔记03:配置文件进一步解读(非常重要)

【MyBatis】学习笔记04:配置文件模板

【MyBatis】学习笔记05:获取参数值的两种方式

【MyBatis】学习笔记06:各种查询所返回数据的数据类型

【MyBatis】学习笔记07:模糊查询

【MyBatis】学习笔记08:批量删除

【MyBatis】学习笔记09:批量删除

【MyBatis】学习笔记10:添加功能获取自增的主键

【MyBatis】学习笔记11:解决字段名和属性的映射关系

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:通过级联属性赋值解决多对一的映射关系的更多相关文章

  1. Mybatis学习笔记12 - 动态sql之choose(when otherwise)标签

    choose (when, otherwise):分支选择:带了break的swtich-case 示例代码: 接口定义: package com.mybatis.dao; import com.my ...

  2. mybatis 学习笔记(四):mybatis 和 spring 的整合

    mybatis 学习笔记(四):mybatis 和 spring 的整合 尝试一下整合 mybatis 和 spring. 思路 spring通过单例方式管理SqlSessionFactory. sp ...

  3. mybatis 学习笔记(一):mybatis 初认识

    mybatis 学习笔记(一):mybatis 初认识 简介 MyBatis是一个Java持久层框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来.mybatis 可以将 prepar ...

  4. Ext.Net学习笔记12:Ext.Net GridPanel Filter用法

    Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ...

  5. Mybatis学习笔记(二) 之实现数据库的增删改查

    开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...

  6. MyBatis:学习笔记(3)——关联查询

    MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统, ...

  7. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

  8. mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

    文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...

  9. mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)

    下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...

  10. Mybatis学习笔记二

    本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询 ...

随机推荐

  1. 深入理解Android MTP之存储映射分析

    深入理解Android MTP之UsbService启动分析 分析了MTP的服务端的启动,本文来分析切换MTP模式后,存储中的数据(文件.目录)是如何映射到PC端的. 首先你得知道如何切换MTP模式. ...

  2. 2022年10月中国数据库排行榜:达梦冲刺IPO热度不减,PolarDB立足创新夺锦才

    秋风萧瑟,洪波涌起. 2022年10月的 墨天轮中国数据库流行度排行榜 火热出炉,本月共有245个数据库参与排名,相比上月新增七个数据库,本月排行榜前十名变动较大:达梦反超openGauss重摘探花: ...

  3. 墨天轮最受DBA欢迎的数据库技术文档-SQL优化篇

    [墨天轮最受欢迎的技术文档]系列文章得到了很多朋友的支持,大家也告诉了我们期待看到的主题这不!大家想看的优化系列-SQL优化篇来啦~原文文末送墨值中,欢迎大家参与! 数据库的调优被分成多个阶段,每个阶 ...

  4. 16. VUE怎么阻止冒泡

    给事件添加 stop 修饰符 ,比如 click.stop  ; 补充: 阻止默认行为 prevent 修饰符 ,超链接的跳转,表单的默认提交 : once 修饰符 事件只触发一次 ps:事件修饰符可 ...

  5. python多线程应用-批量下载视频课程(宠医堂)

    #!/usr/bin/env python # -*- coding: UTF-8 -*- ''' @Name: cyt_record_download @IDE:PyCharm @Author:qt ...

  6. 使用LayUI实现文件上传的一个误区

    1.HTML 2.JS 3.后端处理(注意:参数 file) 这里传入的参数名只能是 file LayUI文件上传官方文档: https://www.layui.com/doc/modules/upl ...

  7. 云游戏平台陷入苦战,继青椒云,云更新,顺网云后,ToDesk正在布局云电竞市场

    在日新月异的科技浪潮中,云游戏正在逐步成为游戏产业的重要分支.根据中国信通院<2023年全球云游戏产业深度观察及趋势研判研究报告>,2022年中国云游戏市场收入达到63.5亿元,同比增长5 ...

  8. AI五子棋_07 落子点四周棋形获取

    AI五子棋 第七步 恭喜你到达第七步! 到这一步,你对战场环境就有了充分的了解.下面我们准备打造机器大脑了.你可能已经有你自己的想法了,不过别着急,先跟着我的思路做.我会提示你解决一些基本的问题. 棋 ...

  9. Protues中51单片机按键无法复位(已解决)

    前言 昨晚用 Protues 搭建了 51 的最小系统电路,在实物中好用的复位电路,到仿真里不能正常复位了. 51 单片机是高电平复位,所以在运行时 RST 引脚应该是低电平,但在仿真中 RST 引脚 ...

  10. 《JVM第6课》本地方法栈

    1 什么是本地方法 首先要知道什么是本地方法,本地方法并不是 JVM 自己的方法,也不是 jre 里面的方法,而是指那些操作系统自己的方法(如C/C++方法),它们在操作系统目录里.可以这么理解,本地 ...