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;
}



