【MyBatis】学习笔记12:通过级联属性赋值解决多对一的映射关系
1.【Mybatis】学习笔记01:连接数据库,实现增删改2.【Mybatis】学习笔记02:实现简单的查3.【MyBatis】学习笔记03:配置文件进一步解读(非常重要)4.【MyBatis】学习笔记04:配置文件模板5.【MyBatis】学习笔记05:获取参数值的两种方式6.【MyBatis】学习笔记06:各种查询所返回数据的数据类型7.【MyBatis】学习笔记07:模糊查询8.【MyBatis】学习笔记08:批量删除9.【MyBatis】学习笔记09:动态设置表名10.【MyBatis】学习笔记10:添加功能获取自增的主键11.【MyBatis】学习笔记11:解决字段名和属性的映射关系
12.【MyBatis】学习笔记12:通过级联属性赋值解决多对一的映射关系
13.【MyBatis】学习笔记13:延迟加载(懒加载)14.【MyBatis】学习笔记14:通过collection解决一对多的映射关系15.【MyBatis】学习笔记15:通过分步查询解决一对多或多对多问题16.【MyBatis】多关键字的模糊查询17.【SpringMVC】框架搭建18.【Javaweb】在项目中添加MyBatis依赖等19.【Spring】作业记录:spring项目从创建、配置到功能实现、测试20.【Spring】【MyBatis】Spring整合MyBatis0121.【转载】【尚硅谷】【MyBatis】2022版Mybatis配套MD文档【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快速获取的方式
版 权 声 明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步