Mybatis对象中含有list对象

本文介绍了如何在Mybatis框架下处理实体类中包含List类型的属性,如ResourcesItemDto和PriceInfoDto的映射问题,并提供了一个实体类及对应的SQL查询示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis是一个非常好用且灵活的持久层框架,但也正是因为太过灵活,导致有时候参数很难整理。我把我在项目中遇到的一个特殊情况列出来,希望下次再碰到时,也有个印象。

实体类如下:

  1. public class BatchManagerViewVo  implements Serializable{  
  2.   
  3.     /** 
  4.     * @Description: serialVersionUID : TODO 
  5.     */   
  6.     private static final long serialVersionUID = 1L;  
  7.   
  8.     private List<ResourcesItemDto> resourceItem;  
  9.       
  10.     private List<PriceInfoDto> priceInfo;  
  11.       
  12.     /** 
  13.      * 主键(PM200600001) 
  14.      */  
  15.     @Id  
  16.     @Column(name = "ID")  
  17.     private String id;  
  18.   
  19.     public List<ResourcesItemDto> getResourceItem() {  
  20.         return resourceItem;  
  21.     }  
  22.     public void setResourceItem(List<ResourcesItemDto> resourceItem) {  
  23.         this.resourceItem = resourceItem;  
  24.     }  
  25.     public List<PriceInfoDto> getPriceInfo() {  
  26.         return priceInfo;  
  27.     }  
  28.     public void setPriceInfo(List<PriceInfoDto> priceInfo) {  
  29.         this.priceInfo = priceInfo;  
  30.     }  
  31.   
  32.     /** 
  33.      * 场次名称 
  34.      */  
  35.     @Column(name = "BATCH_NAME")  
  36.     private String batchName;  
  37.   
  38.     /** 
  39.      * 会员名称 
  40.      */  
  41.     @Column(name = "MEMBER_NAME")  
  42.     private String memberName;  
  43.   
  44.     /** 
  45.      * 发起竞价的会员代码 
  46.      */  
  47.     @Column(name = "MEMBER_CODE")  
  48.     private String memberCode;  
  49.   
  50.     /** 
  51.      * 委托状态:0-已生成,1-已发布,2.竞价中 3-已撤消,4--已作废,5-已完成 
  52.      */  
  53.     @Column(name = "BATCH_STATE")  
  54.     private String batchState;  
  55.   
  56.     /** 
  57.      * 委托申请时间 
  58.      */  
  59.     @Column(name = "BATCH_DATE")  
  60.     private Date batchDate;  
  61.   
  62.     /** 
  63.      * 结束时间 
  64.      */  
  65.     @Column(name = "END_TIME")  
  66.     private Date endTime;  
  67.   
  68.     /** 
  69.      * 开始时间 
  70.      */  
  71.     @Column(name = "START_TIME")  
  72.     private Date startTime;  
  73.   
  74.     /** 
  75.      * 履约保证金是否已经支付 1 - 已经支付 0 - 未支付(只有此状态为1才允许开始拍卖) 
  76.      */  
  77.     @Column(name = "BOND_PAYMENT_STATUS")  
  78.     private String bondPaymentStatus;  
  79.   
  80.     /** 
  81.      * 结算方式:1-场外结算(默认) 2- 场内结算 
  82.      */  
  83.     @Column(name = "SETTLEMENT_MODE")  
  84.     private String settlementMode;  
  85.   
  86.     /** 
  87.      * 作废时间 
  88.      */  
  89.     @Column(name = "INVALID_DATE")  
  90.     private Date invalidDate;  
  91.   
  92.     /** 
  93.      * 审核操作员 
  94.      */  
  95.     @Column(name = "AUDIT_OPERATOR")  
  96.     private String auditOperator;  
  97.   
  98.     /** 
  99.      * 终止操作员 
  100.      */  
  101.     @Column(name = "STOP_OPERATOR")  
  102.     private String stopOperator;  
  103.   
  104.     /** 
  105.      * 作废操作员 
  106.      */  
  107.     @Column(name = "INVALID_OPERATOR")  
  108.     private String invalidOperator;  
  109.   
  110.     /** 
  111.      * 申请操作员 
  112.      */  
  113.     @Column(name = "APPLY_OPERATOR")  
  114.     private String applyOperator;  
  115.   
  116.     /** 
  117.      * 公告日 
  118.      */  
  119.     @Column(name = "ANNOUNCEMENT_DAY")  
  120.     private Date announcementDay;  
  121.   
  122.     /** 
  123.      * 竞价日 
  124.      */  
  125.     @Column(name = "BID_DAY")  
  126.     private Date bidDay;  
  127.   
  128.     /** 
  129.      * 买方保证金 
  130.      */  
  131.     @Column(name = "BUYER_DEPOSIT")  
  132.     private BigDecimal buyerDeposit;  
  133.   
  134.     /** 
  135.      * 卖家保证金 
  136.      */  
  137.     @Column(name = "SELLER_BOND")  
  138.     private BigDecimal sellerBond;  
  139.   
  140.     /** 
  141.      * 强制终止理由 
  142.      */  
  143.     @Column(name = "FORCED_TERMINATION_REASON")  
  144.     private String forcedTerminationReason;  
  145.   
  146.     /** 
  147.      * 终止委托审核理由(待定) 
  148.      */  
  149.     @Column(name = "AUDIT_STOP_REASON")  
  150.     private String auditStopReason;  
  151.   
  152.     /** 
  153.      * 终止委托审核时间(待定) 
  154.      */  
  155.     @Column(name = "AUDIT_STOP_DATE")  
  156.     private Date auditStopDate;  
  157.   
  158.     /** 
  159.      * 终止委托申请理由(待定) 
  160.      */  
  161.     @Column(name = "APPLY_STOP_REASON")  
  162.     private String applyStopReason;  
  163.   
  164.     /** 
  165.      * 终止委托申请时间(待定) 
  166.      */  
  167.     @Column(name = "APPLY_STOP_DATE")  
  168.     private Date applyStopDate;  
  169.   
  170.     /** 
  171.      * 拒绝审核委托理由(待定) 
  172.      */  
  173.     @Column(name = "REFUSE_AUDIT_REASON")  
  174.     private String refuseAuditReason;  
  175.   
  176.     /** 
  177.      * 委托审核时间(待定) 
  178.      */  
  179.     @Column(name = "AUDIT_TIME")  
  180.     private Date auditTime;  
  181.   
  182.     /** 
  183.      * 定向竞价0否1是1 
  184.      */  
  185.     @Column(name = "IS_DIRECTIONAL_BID")  
  186.     private String isDirectionalBid;  
  187.   
  188.     /** 
  189.      * 定向的原因,当场次定向时必须输入 
  190.      */  
  191.     @Column(name = "DIRECTIONAL_REASON")  
  192.     private String directionalReason;  
  193.   
  194.     /** 
  195.      * 是否需要发送短信0不发送1发送 
  196.      */  
  197.     @Column(name = "IS_SEND_MESSAGE")  
  198.     private String isSendMessage;  
  199.   
  200.     /** 
  201.      * 是否显示中标价格 
  202.      */  
  203.     @Column(name = "IS_SHOW_DEAL_PRICE")  
  204.     private String isShowDealPrice;  
  205.   
  206.     /** 
  207.      * 是否显示定价 
  208.      */  
  209.     @Column(name = "IS_SHOW_ORDER_PRICE")  
  210.     private String isShowOrderPrice;  
  211.   
  212.     /** 
  213.      * 是否显示中标会员 
  214.      */  
  215.     @Column(name = "IS_SHOW_DEAL_MEMBER")  
  216.     private String isShowDealMember;  
  217.   
  218.     /** 
  219.      * 最少响应人数 
  220.      */  
  221.     @Column(name = "MINIMUM_RESPONSE")  
  222.     private String minimumResponse;  
  223.   
  224.     /** 
  225.      * 是否显示成交结果 
  226.      */  
  227.     @Column(name = "ISSHOWDEALRESULT")  
  228.     private String isshowdealresult;  
  229.   
  230.     /** 
  231.      * 竞价模式:1-公开增价,2自由报价,3-荷式竞价 
  232.      */  
  233.     @Column(name = "BIDDING_TYPE")  
  234.     private String biddingType;  
  235.   
  236.     /** 
  237.      * 报盘方式:1-单价,2-总价 
  238.      */  
  239.     @Column(name = "OFFER_TYPE")  
  240.     private String offerType;  
  241.   
  242.     /** 
  243.      * 是否显示起拍价 1显示(默认) 2不显示  
  244.      */  
  245.     @Column(name = "IS_SHOW_STARTING_PIRCE")  
  246.     private String isShowStartingPirce;  
  247.   
  248.     /** 
  249.      * 域名 
  250.      */  
  251.     @Column(name = "DOAMIN")  
  252.     private String doamin;  
  253.   
  254.     /** 
  255.      * 协议 
  256.      */  
  257.     @Column(name = "EDITMENT")  
  258.     private String editment;  
  259. }   

这里的实体类中,包含了2个List对象,所以在写xml文件的时候多少对我这种菜鸟有点难度。

  1. <select id="findSellerBatchInfo" parameterType="com.ouyeel.chem.bdt.search.BatchManagerSerachModel" resultMap="batchInfoMap">  
  2.     select   
  3.     batch.ID,  
  4.     batch.BATCH_NAME,  
  5.     batch.BATCH_STATE batch_state,  
  6.     batch.START_TIME batch_start_time,  
  7.     batch.END_TIME batch_end_time,  
  8.     batch.IS_DIRECTIONAL_BID batch_is_direc,  
  9.     batch.BUYER_DEPOSIT batch_buyer_deposit,  
  10.     batch.BIDDING_TYPE batch_bidding_type,  
  11.     batch.OFFER_TYPE batch_offer_type,  
  12.     batch.BATCH_DATE batch_date,  
  13.     batch.ANNOUNCEMENT_DAY batch_announ,  
  14.     batch.BID_DAY batch_bid_day,  
  15.     price.id price_id,   
  16.     price.STARTING_PIRCE price_starting_price,  
  17.     price.BIDDING_GRADIENT price_bidding_gradient,  
  18.     price.TAX_RATE price_tax_rate,  
  19.     price.TAX_FREE_PRICE price_tax_free_price,  
  20.     price.RESERVE_PRICE price_reserve_price,  
  21.     item.PRODUCT_NAME item_product_name,  
  22.     item.PRODUCT_NO item_product_no,  
  23.     item.PACKAGES item_packages,  
  24.     item.ORIGIN_PLACE item_origin_place,  
  25.     item.WAREHOUSE_NAME item_warehouse,  
  26.     item.PIECE_UNIT item_piece_unit,  
  27.     item.TRADING_WEIGHT item_trading_weight  
  28.     from bdt_batch batch  
  29.     left join bdt_resources_item item on item.batch_id = batch.id   
  30. left join bdt_price_info price on price.batch_id = batch.id and item.id = price.item_id    
  31. where batch.member_code = #{memberCode,jdbcType=VARCHAR}<!--  and batch.id = 'P170508005' -->  
  32.     <if test="id != null and id != '' ">  
  33.     and batch.id like '%${id}%'  
  34.     </if>  
  35.     <if test="startTime != null and startTime != '' ">  
  36.     and batch.batch_date >= #{startTime,jdbcType=TIMESTAMP}  
  37.     </if>  
  38.     <if test="endTime != null and endTime != '' ">  
  39.     and batch.batch_date <= #{endTime,jdbcType=TIMESTAMP}  
  40.     </if>  
  41.     <if test="batchState != null and batchState != '' ">  
  42.     and batch.batch_state = #{batchState,jdbcType=VARCHAR}  
  43.     </if>  
  44.     <if test="sidx != null and sidx != '' ">  
  45.     order by batch.${sidx} ${sord}  
  46.     </if>  
  47.     <if test="sidx == null or sidx ==''">  
  48.     order by batch.id desc  
  49.     </if>  
  50.  </select>  

  1. <resultMap type="com.ouyeel.chem.bdt.entity.vo.BatchManagerViewVo" id="batchInfoMap">  
  2.         <!-- association字面意思关联,这里只专门做一对一关联; property表示是com.mybatis.bean.StudentTemp中的属性名称;   
  3.             javaType表示该属性是什么类型对象 -->  
  4.         <!-- property 表示com.mybatis.bean.Class中的属性; column 表示表中的列名 -->  
  5.         <id property="id" column="id"/>  
  6.         <result property="batchName" column="batch_name"/>  
  7.         <result property="startTime" column="batch_start_time"/>  
  8.         <result property="endTime" column="batch_end_time"/>  
  9.         <result property="isDirectionalBid" column="batch_is_direc"/>  
  10.         <result property="batchState" column="batch_state"/>  
  11.         <result property="buyerDeposit" column="batch_buyer_deposit"/>  
  12.         <result property="biddingType" column="batch_bidding_type"/>  
  13.         <result property="offerType" column="batch_offer_type"/>  
  14.         <result property="batchDate" column="batch_date"/>  
  15.         <result property="announcementDay" column="batch_announ"/>  
  16.         <result property="bidDay" column="batch_bid_day"/>  
  17.         <!-- property表示集合类型属性名称,ofType表示集合中的对象是什么类型 -->  
  18.         <collection property="priceInfo" ofType="com.ouyeel.chem.bdt.entity.PriceInfoDto">  
  19.             <id property="id" column="price_id"/>  
  20.             <result property="startingPirce" column="price_starting_price"/>  
  21.             <result property="biddingGradient" column="price_bidding_gradient"/>  
  22.             <result property="taxRate" column="price_tax_rate"/>  
  23.             <result property="taxFreePrice" column="price_tax_free_price"/>  
  24.             <result property="reservePrice" column="price_reserve_price"/>  
  25.         </collection>  
  26.        <!--  property表示集合类型属性名称,ofType表示集合中的对象是什么类型 -->  
  27.         <collection property="resourceItem" ofType="com.ouyeel.chem.bdt.entity.ResourcesItemDto">  
  28.             <result property="productName" column="item_product_name"/>  
  29.             <result property="productNo" column="item_product_no"/>  
  30.             <result property="packages" column="item_packages"/>  
  31.             <result property="originPlace" column="item_origin_place"/>  
  32.             <result property="warehouseName" column="item_warehouse"/>  
  33.             <result property="pieceUnit" column="item_piece_unit"/>  
  34.             <result property="tradingWeight" column="item_trading_weight"/>  
  35.         </collection>  
  36.   </resultMap>  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值