collection:一对多(表关系)

表关系: 库存表 1==>n 货品表,
需求: 查询库存时候,联查出来货品

//库存 实体类【部分属性】
public class Question {@Data
public class StockGoods  extends BaseEntity{private List<GoodsEntity> goodsEntity;/*** 商品编号*/private String goodsId;/*** 商品批号*/private String batchNumber;}
//货品 实体类【部分实体类;采用了JPA注解,若你使用的是mybatis不要写这些注解】
@Entity
@Table(name = "oms_goods")
@IdClass(MasterDataEntityPK.class)
public class GoodsEntity extends BaseEntity implements Serializable {private static final long serialVersionUID = 1L;/*** ERP编号*/@Id@Column(name = "md_number")private String mdNumber;/*** 主数据编码*/@Column(name = "md_code")private String mdCode;

方式一:

代码复用性高, 主表分页查询正确

omsStock.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cqp.eop.basic.stock.mapper.OmsStockGoodsMapper"><resultMap id="StockAndGoods" type="com.cqp.eop.basic.stock.entity.StockGoods"><id column="GOODS_ID" jdbcType="VARCHAR" property="goodsId" /><id column="BATCH_NUMBER" jdbcType="VARCHAR" property="batchNumber" /><id column="stockSysCode" jdbcType="VARCHAR" property="systemCode" /><result column="STOCK_NUM" jdbcType="VARCHAR" property="stockNum" /><result column="APP_ID" jdbcType="VARCHAR" property="appId" /><result column="AUTH_CODE" jdbcType="VARCHAR" property="authCode" /><result column="PRODUCTION_DATE" jdbcType="VARCHAR" property="productionDate" /><result column="EXPIRY_DATE" jdbcType="VARCHAR" property="expiryDate" /><result column="SALE_PRICE" jdbcType="VARCHAR" property="salePrice" /><result column="stockCreateDate" jdbcType="TIMESTAMP" property="omsCreateDate" /><result column="stockDate" jdbcType="TIMESTAMP" property="omsDate" /><result column="stockState" jdbcType="INTEGER" property="omsStatus" /><result column="OMS_TRANS_ERROR" jdbcType="VARCHAR" property="omsTransError" /><result column="stockOmsBizId" jdbcType="VARCHAR" property="omsBizId" /><result column="ROW_NUM" jdbcType="INTEGER" property="rowNum" /><result column="stockCode" jdbcType="VARCHAR" property="orgCode" /><collection property="goodsEntity" javaType="java.util.ArrayList" ofType="com.cqp.oms.common.upstream.entity.GoodsEntity"><id column="MD_NUMBER" jdbcType="VARCHAR" property="mdNumber" /><id column="goodsSysCode" jdbcType="VARCHAR" property="systemCode" /><result column="MD_CODE" jdbcType="VARCHAR" property="mdCode" /><result column="goodsCode" jdbcType="VARCHAR" property="orgCode" /><result column="GOODS_NAME" jdbcType="VARCHAR" property="goodsName" /><result column="GENERAL_NAME" jdbcType="VARCHAR" property="generalName" /><result column="SPECIFICATION" jdbcType="VARCHAR" property="specification" /><result column="UNIT" jdbcType="VARCHAR" property="unit" /><result column="ALLOW_NO" jdbcType="VARCHAR" property="allowNo" /><result column="PRODUCT_NAME" jdbcType="VARCHAR" property="productName" /><result column="IS_CHINESE_DRUG" jdbcType="VARCHAR" property="isChineseDrug" /><result column="VALIDITY" jdbcType="VARCHAR" property="validity" /><result column="RECOMMENDED_PRICE" jdbcType="VARCHAR" property="recommendedPrice" /><result column="TAX_RATE" jdbcType="VARCHAR" property="taxRate" /><result column="PROVIDER_NAME" jdbcType="VARCHAR" property="providerName" /><result column="PRODUCT_ADDRESS" jdbcType="VARCHAR" property="productAddress" /><result column="DOSAGE_FORM" jdbcType="VARCHAR" property="dosageForm" /><result column="DRUG_TYPE" jdbcType="VARCHAR" property="drugType" /><result column="NATIONAL_PRICE" jdbcType="VARCHAR" property="nationalPrice" /><result column="VENDOR_CODE" jdbcType="VARCHAR" property="vendorCode" /><result column="IS_DELETE" jdbcType="VARCHAR" property="isDelete" /><result column="goodsCreateDate" jdbcType="TIMESTAMP" property="omsCreateDate" /><result column="goodsDate" jdbcType="TIMESTAMP" property="omsDate" /><result column="goodsState" jdbcType="INTEGER" property="omsStatus" /><result column="OMS_TRANS_ERROR" jdbcType="VARCHAR" property="omsTransError" /><result column="goodsOmsBizId" jdbcType="VARCHAR" property="omsBizId" /></collection></resultMap>

若表与表之间的字段重名且值不同,要使用别名,至于怎么映射,请看上一篇文章

查询结果:根据 stock.库存数量>=1000000

即:一个库存对用多个商品

{"omsBizId": "INCAPF_1_jl_00000000000000861139","omsCreateDate": "2021-07-20T18:38:22.087+0000","omsDate": "2021-07-22T06:42:05.331+0000","omsStatus": 1,"omsTransError": null,"goodsEntity": [{"omsBizId": "SPZSJ1627529504356","omsCreateDate": "2021-07-29T08:18:20.873+0000","omsDate": "2021-09-07T06:31:41.286+0000","omsStatus": 1,"omsTransError": null,"mdNumber": "1000175454PA","mdCode": "1000175454","orgCode": "PA","goodsName": "泮托拉唑钠肠溶片(vv)","generalName": "泮托拉唑钠肠溶片","specification": "40mg*7`s","unit": "盒","allowNo": null,"productName": "山东罗欣药业集团股份有限公司","isChineseDrug": "0","validity": null,"taxRate": "13% 税","recommendedPrice": null,"providerName": "重庆尚通医药有限公司","productAddress": null,"dosageForm": "肠溶片","drugType": "化学药制剂","nationalPrice": null,"vendorCode": null,"isDelete": "FALSE","systemCode": "10080"},{"omsBizId": "SPZSJ1630313832764","omsCreateDate": "2021-08-30T08:57:14.193+0000","omsDate": "2021-09-07T06:31:41.334+0000","omsStatus": 1,"omsTransError": null,"mdNumber": "1000175454PD","mdCode": "1000175454","orgCode": "PD","goodsName": "泮托拉唑钠肠溶片(vv)","generalName": "泮托拉唑钠肠溶片","specification": "40mg*7`s","unit": "盒","allowNo": null,"productName": "山东罗欣药业集团股份有限公司","isChineseDrug": "0","validity": null,"taxRate": "13% 税","recommendedPrice": "","providerName": "重庆尚通医药有限公司","productAddress": "","dosageForm": "肠溶片","drugType": "化学药制剂","nationalPrice": "","vendorCode": null,"isDelete": "FALSE","systemCode": "10077"},{"omsBizId": "SPZSJ1630313832764","omsCreateDate": "2021-08-30T08:57:14.193+0000","omsDate": "2021-09-07T06:31:41.344+0000","omsStatus": 1,"omsTransError": null,"mdNumber": "1000175454PD","mdCode": "1000175454","orgCode": "PD","goodsName": "泮托拉唑钠肠溶片(vv)","generalName": "泮托拉唑钠肠溶片","specification": "40mg*7`s","unit": "盒","allowNo": null,"productName": "山东罗欣药业集团股份有限公司","isChineseDrug": "0","validity": null,"taxRate": "13% 税","recommendedPrice": "","providerName": "重庆尚通医药有限公司","productAddress": "","dosageForm": "肠溶片","drugType": "化学药制剂","nationalPrice": "","vendorCode": null,"isDelete": "FALSE","systemCode": "10078"},{"omsBizId": "SPZSJ1630313832764","omsCreateDate": "2021-08-30T08:57:14.193+0000","omsDate": "2021-09-07T06:31:41.367+0000","omsStatus": 1,"omsTransError": null,"mdNumber": "1000175454PD","mdCode": "1000175454","orgCode": "PD","goodsName": "泮托拉唑钠肠溶片(vv)","generalName": "泮托拉唑钠肠溶片","specification": "40mg*7`s","unit": "盒","allowNo": null,"productName": "山东罗欣药业集团股份有限公司","isChineseDrug": "0","validity": null,"taxRate": "13% 税","recommendedPrice": "","providerName": "重庆尚通医药有限公司","productAddress": "","dosageForm": "肠溶片","drugType": "化学药制剂","nationalPrice": "","vendorCode": null,"isDelete": "FALSE","systemCode": "10079"}],"goodsId": "1000175454","batchNumber": "1117-02","systemCode": "10079","rowNum": 52,"stockNum": "184","appId": null,"authCode": null,"productionDate": "2020-11-01 00:00:00","expiryDate": "2022-01-01 00:00:00","salePrice": null,"orgCode": null

association:一对一的关系

//库存 实体类【部分属性】
public class Question {@Data
public class StockGoods  extends BaseEntity{private GoodsEntity goodsEntity;/*** 商品编号*/private String goodsId;/*** 商品批号*/private String batchNumber;}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cqp.eop.basic.stock.mapper.OmsStockGoodsMapper"><resultMap id="StockAndGoods" type="com.cqp.eop.basic.stock.entity.StockGoods"><id column="GOODS_ID" jdbcType="VARCHAR" property="goodsId" /><id column="BATCH_NUMBER" jdbcType="VARCHAR" property="batchNumber" /><id column="stockSysCode" jdbcType="VARCHAR" property="systemCode" /><result column="STOCK_NUM" jdbcType="VARCHAR" property="stockNum" /><result column="APP_ID" jdbcType="VARCHAR" property="appId" /><result column="AUTH_CODE" jdbcType="VARCHAR" property="authCode" /><result column="PRODUCTION_DATE" jdbcType="VARCHAR" property="productionDate" /><result column="EXPIRY_DATE" jdbcType="VARCHAR" property="expiryDate" /><result column="SALE_PRICE" jdbcType="VARCHAR" property="salePrice" /><result column="stockCreateDate" jdbcType="TIMESTAMP" property="omsCreateDate" /><result column="stockDate" jdbcType="TIMESTAMP" property="omsDate" /><result column="stockState" jdbcType="INTEGER" property="omsStatus" /><result column="OMS_TRANS_ERROR" jdbcType="VARCHAR" property="omsTransError" /><result column="stockOmsBizId" jdbcType="VARCHAR" property="omsBizId" /><result column="ROW_NUM" jdbcType="INTEGER" property="rowNum" /><result column="stockCode" jdbcType="VARCHAR" property="orgCode" /><association property="goodsEntity"javaType="com.cqp.oms.common.upstream.entity.GoodsEntity"><id column="MD_NUMBER" jdbcType="VARCHAR" property="mdNumber" /><id column="goodsSysCode" jdbcType="VARCHAR" property="systemCode" /><result column="MD_CODE" jdbcType="VARCHAR" property="mdCode" /><result column="goodsCode" jdbcType="VARCHAR" property="orgCode" /><result column="GOODS_NAME" jdbcType="VARCHAR" property="goodsName" /><result column="GENERAL_NAME" jdbcType="VARCHAR" property="generalName" /><result column="SPECIFICATION" jdbcType="VARCHAR" property="specification" /><result column="UNIT" jdbcType="VARCHAR" property="unit" /><result column="ALLOW_NO" jdbcType="VARCHAR" property="allowNo" /><result column="PRODUCT_NAME" jdbcType="VARCHAR" property="productName" /><result column="IS_CHINESE_DRUG" jdbcType="VARCHAR" property="isChineseDrug" /><result column="VALIDITY" jdbcType="VARCHAR" property="validity" /><result column="RECOMMENDED_PRICE" jdbcType="VARCHAR" property="recommendedPrice" /><result column="TAX_RATE" jdbcType="VARCHAR" property="taxRate" /><result column="PROVIDER_NAME" jdbcType="VARCHAR" property="providerName" /><result column="PRODUCT_ADDRESS" jdbcType="VARCHAR" property="productAddress" /><result column="DOSAGE_FORM" jdbcType="VARCHAR" property="dosageForm" /><result column="DRUG_TYPE" jdbcType="VARCHAR" property="drugType" /><result column="NATIONAL_PRICE" jdbcType="VARCHAR" property="nationalPrice" /><result column="VENDOR_CODE" jdbcType="VARCHAR" property="vendorCode" /><result column="IS_DELETE" jdbcType="VARCHAR" property="isDelete" /><result column="goodsCreateDate" jdbcType="TIMESTAMP" property="omsCreateDate" /><result column="goodsDate" jdbcType="TIMESTAMP" property="omsDate" /><result column="goodsState" jdbcType="INTEGER" property="omsStatus" /><result column="OMS_TRANS_ERROR" jdbcType="VARCHAR" property="omsTransError" /><result column="goodsOmsBizId" jdbcType="VARCHAR" property="omsBizId" /></association ></resultMap>

查询结果:根据 stock.库存数量>=1000000

即:一个库存值对应一个商品

{"omsBizId": "INCAPF_1_jl_00000000000000861139","omsCreateDate": "2021-07-20T18:38:22.087+0000","omsDate": "2021-07-22T06:42:05.331+0000","omsStatus": 1,"omsTransError": null,"goodsEntity": [{"omsBizId": "SPZSJ1627529504356","omsCreateDate": "2021-07-29T08:18:20.873+0000","omsDate": "2021-09-07T06:31:41.286+0000","omsStatus": 1,"omsTransError": null,"mdNumber": "1000175454PA","mdCode": "1000175454","orgCode": "PA","goodsName": "泮托拉唑钠肠溶片(vv)","generalName": "泮托拉唑钠肠溶片","specification": "40mg*7`s","unit": "盒","allowNo": null,"productName": "山东罗欣药业集团股份有限公司","isChineseDrug": "0","validity": null,"taxRate": "13% 税","recommendedPrice": null,"providerName": "重庆尚通医药有限公司","productAddress": null,"dosageForm": "肠溶片","drugType": "化学药制剂","nationalPrice": null,"vendorCode": null,"isDelete": "FALSE","systemCode": "10080"}
}

查询的数据条数变少,只有一条数据

【所以当idea控制台与Navicat所查询的数据条数一样,且postman和浏览器查询的数据行条数与idea、navicat查询的条数对不上,那么就可能是mapper.xml文件的对应关系不正确】

----------------------------------------------------------------------------------------------------------------------------

若想association和collection有相同的效果时association查询出来的数据不被覆盖,那么就在实体类中添加一个能够唯一识别的id,其余不变,因为表中的id不能够唯一识别,所以查询出来的数据行会被覆盖,所以postman的条数和idea的条数不一致

resultMap中只有一个<id>标签,而且只有StockGoods才有<id>标签,<association>标签下没有<id>标签

//库存 实体类【部分属性】
public class Question {@Data
public class StockGoods  extends BaseEntity{private GoodsEntity goodsEntity;private Integer id;//不需要赋值,因为此数据表中也没有此数据,查询出来,都为null/*** 商品编号*/private String goodsId;/*** 商品批号*/private String batchNumber;}
<resultMap id="StockAndGoods" type="com.cqp.eop.basic.stock.entity.StockGoods"><id column="id" property="id"/><result column="GOODS_ID" jdbcType="VARCHAR" property="goodsId" /><result column="BATCH_NUMBER" jdbcType="VARCHAR" property="batchNumber" /><result column="stockSysCode" jdbcType="VARCHAR" property="systemCode" /><result column="STOCK_NUM" jdbcType="VARCHAR" property="stockNum" /><result column="APP_ID" jdbcType="VARCHAR" property="appId" /><result column="AUTH_CODE" jdbcType="VARCHAR" property="authCode" /><result column="PRODUCTION_DATE" jdbcType="VARCHAR" property="productionDate" /><result column="EXPIRY_DATE" jdbcType="VARCHAR" property="expiryDate" /><result column="SALE_PRICE" jdbcType="VARCHAR" property="salePrice" /><result column="stockCreateDate" jdbcType="TIMESTAMP" property="omsCreateDate" /><result column="stockDate" jdbcType="TIMESTAMP" property="omsDate" /><result column="stockState" jdbcType="INTEGER" property="omsStatus" /><result column="OMS_TRANS_ERROR" jdbcType="VARCHAR" property="omsTransError" /><result column="stockOmsBizId" jdbcType="VARCHAR" property="omsBizId" /><result column="ROW_NUM" jdbcType="INTEGER" property="rowNum" /><result column="stockCode" jdbcType="VARCHAR" property="orgCode" /><association property="goodsEntity" javaType="com.cqp.eop.basic.goods.entity.GoodsEntity"><result column="MD_NUMBER" jdbcType="VARCHAR" property="mdNumber" /><result column="goodsSysCode" jdbcType="VARCHAR" property="systemCode" /><result column="MD_CODE" jdbcType="VARCHAR" property="mdCode" /><result column="goodsCode" jdbcType="VARCHAR" property="orgCode" /><result column="GOODS_NAME" jdbcType="VARCHAR" property="goodsName" /><result column="GENERAL_NAME" jdbcType="VARCHAR" property="generalName" /><result column="SPECIFICATION" jdbcType="VARCHAR" property="specification" /><result column="UNIT" jdbcType="VARCHAR" property="unit" /><result column="ALLOW_NO" jdbcType="VARCHAR" property="allowNo" /><result column="PRODUCT_NAME" jdbcType="VARCHAR" property="productName" /><result column="IS_CHINESE_DRUG" jdbcType="VARCHAR" property="isChineseDrug" /><result column="VALIDITY" jdbcType="VARCHAR" property="validity" /><result column="RECOMMENDED_PRICE" jdbcType="VARCHAR" property="recommendedPrice" /><result column="TAX_RATE" jdbcType="VARCHAR" property="taxRate" /><result column="PROVIDER_NAME" jdbcType="VARCHAR" property="providerName" /><result column="PRODUCT_ADDRESS" jdbcType="VARCHAR" property="productAddress" /><result column="DOSAGE_FORM" jdbcType="VARCHAR" property="dosageForm" /><result column="DRUG_TYPE" jdbcType="VARCHAR" property="drugType" /><result column="NATIONAL_PRICE" jdbcType="VARCHAR" property="nationalPrice" /><result column="VENDOR_CODE" jdbcType="VARCHAR" property="vendorCode" /><result column="IS_DELETE" jdbcType="VARCHAR" property="isDelete" /><result column="goodsCreateDate" jdbcType="TIMESTAMP" property="omsCreateDate" /><result column="goodsDate" jdbcType="TIMESTAMP" property="omsDate" /><result column="goodsState" jdbcType="INTEGER" property="omsStatus" /><result column="OMS_TRANS_ERROR" jdbcType="VARCHAR" property="omsTransError" /><result column="goodsOmsBizId" jdbcType="VARCHAR" property="omsBizId" /></association>
</resultMap>

Mybatis的collection和association相关推荐

  1. Mybatis中的collection、association来处理结果映射

    前不久的项目时间紧张,为了尽快完成原型开发,写了一段效率相当低的代码. 最近几天闲下来,主动把之前的代码优化了一下:) 标签:Java.Mybatis.MySQL 概况:本地系统从另外一个系统得到实体 ...

  2. mybatis 配置文件中,collection 和 association 的对应关系

    mybatis 配置文件中,collection 和 association 的对应关系  如下图所示:

  3. mybatis一对多,多对一映射,collection和association标签的使用

    mybatis中,可以使用collection和association来处理一对多和多对一的关系 其中每个标签中有2中种使用方式,一种是嵌套查询,一种是嵌套结果 嵌套查询会在主查询中,去调用子查询 嵌 ...

  4. collection和association的区别

    collection和association的使用区别 关联-association 集合-collection 比如同时有User.java和Card.java两个类 User.java如下: pu ...

  5. Mybatis | Mybatis标签collection一对多的使用

    Mybatis标签collection一对多的使用 一.colleciton 标签 二.collection使用方法 1. 方法一: 嵌套结果映射 2. 方法二: 嵌套select 查询 三. ass ...

  6. mybatis中collection中的ofType=“String“时

    mybatis中collection中的ofType="String"时 DTO: package com.example.mybatis.entity;import java.u ...

  7. MyBatis嵌套Collection

    站在巨人的肩膀上 https://blog.csdn.net/liaoxiaohua1981/article/details/6862466 聚集元素用来处理"一对多"的关系.需要 ...

  8. Mybatis ResultMap Collection 复合主键

    https://www.cnblogs.com/azhqiang/p/6492195.html Mybatis ResultMap Collection 复合主键 <resultMap type ...

  9. java mybatis多层collection嵌套查询

    java mybatis多层collection嵌套查询 1.实体 package com.humi.iem.common.model.equipment;import io.swagger.anno ...

最新文章

  1. 设置Spring 3开发环境
  2. linux安装docker部署java项目
  3. java过时_Java 语言的几个缺陷之四: 过时的 JavaBean
  4. python 批量处理文件
  5. Android 仿知乎创意广告
  6. 马斯克的SpaceX星链网遇散热危机,气温过高自动关机
  7. 计算机网络的体系结构
  8. FD.io VPP:用户文档:VPP RPM包的构建与离线安装
  9. step与matlab的opc,wincc与matlab通过OPC通讯
  10. UDP 理论概述与编码入门
  11. Sequencher_v4.1.4 DNA 序列分析的工业标准软件
  12. DOS命令tree的用法
  13. Mint UI - 饿了么出品的开源、轻量的移动端 UI 组件库
  14. python水浒传名字次数_《水浒传》中108个好汉的姓名及绰号!要按顺序!
  15. 可汗学院公开课:线性代数笔记-11-求解三元方程组
  16. html怎么用img添加图片,img标签(html怎么用img添加图片)
  17. AWS 获取AccessKey和密钥,上传文件到s3
  18. python教学视频k_10个Python奇趣教程,附视频讲解+练手项目。
  19. C#用IIS发布网站后localhost打不开127.0.0.1可以打开
  20. 公有云成本节省神器!京东云共享带宽包正式上线

热门文章

  1. WooCommerce REST API的初学者指南
  2. 软件企业税收优惠政策2023
  3. 我的mybatis-plus用法,被全公司同事开始悄悄模仿了
  4. 如何在线进行PDF文档压缩?
  5. pccs色卡_PCCS色卡RGBCMYK對照表.PDF
  6. maven将第三方依赖包添加到pom文件
  7. 带您了解如何做好新媒体营销推广
  8. 基于C语言的简单小游戏-(扫雷)
  9. 微信公众号开发--自定义菜单跳转页面并获取用户信息(续)
  10. JavaScript-节点操作