栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis的collection和association

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis的collection和association

collection:一对多(表关系)

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

//库存 实体类【部分属性】
public class Question {
	@Data
public class StockGoods  extends baseEntity{
    private List 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;

	
	@Id
	@Column(name = "md_number")
	private String mdNumber;

	
	@Column(name = "md_code")
	private String mdCode;
方式一:
代码复用性高, 主表分页查询正确

omsStock.xml




    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
    

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

查询结果:根据 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;
	
}

  




    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
    

查询结果:根据 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的条数不一致

//库存 实体类【部分属性】
public class Question {
	@Data
public class StockGoods  extends baseEntity{
    private GoodsEntity goodsEntity;
    
    private Integer id;//不需要赋值,因为此数据表中也没有此数据,查询出来,都为null

    
    private String goodsId;

    
    private String batchNumber;
	
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/271835.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号