mybatis配置对象包含对象以及List的方式

mybatis配置对象包含对象及List

这里隐藏get set方法

public class BatchManagerViewVo  implements Serializable{ /*** @Description: serialVersionUID : TODO*/ private static final long serialVersionUID = 1L; private List<ResourcesItemDto> resourceItem;private List<PriceInfoDto> priceInfo;/**     * 主键(PM200600001)     */    @Id    @Column(name = "ID")    private String id;     public List<ResourcesItemDto> getResourceItem() {return resourceItem;}public void setResourceItem(List<ResourcesItemDto> resourceItem) {this.resourceItem = resourceItem;}public List<PriceInfoDto> getPriceInfo() {return priceInfo;}public void setPriceInfo(List<PriceInfoDto> priceInfo) {this.priceInfo = priceInfo;} /**     * 场次名称     */    @Column(name = "BATCH_NAME")    private String batchName;     /**     * 会员名称     */    @Column(name = "MEMBER_NAME")    private String memberName;     /**     * 发起竞价的会员代码     */    @Column(name = "MEMBER_CODE")    private String memberCode;     /**     * 委托状态:0-已生成,1-已发布,2.竞价中 3-已撤消,4--已作废,5-已完成     */    @Column(name = "BATCH_STATE")    private String batchState;     /**     * 委托申请时间     */    @Column(name = "BATCH_DATE")    private Date batchDate;     /**     * 结束时间     */    @Column(name = "END_TIME")    private Date endTime;     /**     * 开始时间     */    @Column(name = "START_TIME")    private Date startTime;     /**     * 履约保证金是否已经支付 1 - 已经支付 0 - 未支付(只有此状态为1才允许开始拍卖)     */    @Column(name = "BOND_PAYMENT_STATUS")    private String bondPaymentStatus;     /**     * 结算方式:1-场外结算(默认) 2- 场内结算     */    @Column(name = "SETTLEMENT_MODE")    private String settlementMode;     /**     * 作废时间     */    @Column(name = "INVALID_DATE")    private Date invalidDate;     /**     * 审核操作员     */    @Column(name = "AUDIT_OPERATOR")    private String auditOperator;     /**     * 终止操作员     */    @Column(name = "STOP_OPERATOR")    private String stopOperator;     /**     * 作废操作员     */    @Column(name = "INVALID_OPERATOR")    private String invalidOperator;     /**     * 申请操作员     */    @Column(name = "APPLY_OPERATOR")    private String applyOperator;     /**     * 公告日     */    @Column(name = "ANNOUNCEMENT_DAY")    private Date announcementDay;     /**     * 竞价日     */    @Column(name = "BID_DAY")    private Date bidDay;     /**     * 买方保证金     */    @Column(name = "BUYER_DEPOSIT")    private BigDecimal buyerDeposit;     /**     * 卖家保证金     */    @Column(name = "SELLER_BOND")    private BigDecimal sellerBond;     /**     * 强制终止理由     */    @Column(name = "FORCED_TERMINATION_REASON")    private String forcedTerminationReason;     /**     * 终止委托审核理由(待定)     */    @Column(name = "AUDIT_STOP_REASON")    private String auditStopReason;     /**     * 终止委托审核时间(待定)     */    @Column(name = "AUDIT_STOP_DATE")    private Date auditStopDate;     /**     * 终止委托申请理由(待定)     */    @Column(name = "APPLY_STOP_REASON")    private String applyStopReason;     /**     * 终止委托申请时间(待定)     */    @Column(name = "APPLY_STOP_DATE")    private Date applyStopDate;     /**     * 拒绝审核委托理由(待定)     */    @Column(name = "REFUSE_AUDIT_REASON")    private String refuseAuditReason;     /**     * 委托审核时间(待定)     */    @Column(name = "AUDIT_TIME")    private Date auditTime;     /**     * 定向竞价0否1是1     */    @Column(name = "IS_DIRECTIONAL_BID")    private String isDirectionalBid;     /**     * 定向的原因,当场次定向时必须输入     */    @Column(name = "DIRECTIONAL_REASON")    private String directionalReason;     /**     * 是否需要发送短信0不发送1发送     */    @Column(name = "IS_SEND_MESSAGE")    private String isSendMessage;     /**     * 是否显示中标价格     */    @Column(name = "IS_SHOW_DEAL_PRICE")    private String isShowDealPrice;     /**     * 是否显示定价     */    @Column(name = "IS_SHOW_ORDER_PRICE")    private String isShowOrderPrice;     /**     * 是否显示中标会员     */    @Column(name = "IS_SHOW_DEAL_MEMBER")    private String isShowDealMember;     /**     * 最少响应人数     */    @Column(name = "MINIMUM_RESPONSE")    private String minimumResponse;     /**     * 是否显示成交结果     */    @Column(name = "ISSHOWDEALRESULT")    private String isshowdealresult;     /**     * 竞价模式:1-公开增价,2自由报价,3-荷式竞价     */    @Column(name = "BIDDING_TYPE")    private String biddingType;     /**     * 报盘方式:1-单价,2-总价     */    @Column(name = "OFFER_TYPE")    private String offerType;     /**     * 是否显示起拍价 1显示(默认) 2不显示      */    @Column(name = "IS_SHOW_STARTING_PIRCE")    private String isShowStartingPirce;     /**     * 域名     */    @Column(name = "DOAMIN")    private String doamin;     /**     * 协议     */    @Column(name = "EDITMENT")    private String editment;} 
 <select id="findSellerBatchInfo" parameterType="com.ouyeel.chem.bdt.search.BatchManagerSerachModel" resultMap="batchInfoMap">  select   batch.ID,  batch.BATCH_NAME,  batch.BATCH_STATE batch_state,  batch.START_TIME batch_start_time,  batch.END_TIME batch_end_time,  batch.IS_DIRECTIONAL_BID batch_is_direc,  batch.BUYER_DEPOSIT batch_buyer_deposit,  batch.BIDDING_TYPE batch_bidding_type,  batch.OFFER_TYPE batch_offer_type,  batch.BATCH_DATE batch_date,  batch.ANNOUNCEMENT_DAY batch_announ,  batch.BID_DAY batch_bid_day,  price.id price_id,   price.STARTING_PIRCE price_starting_price,  price.BIDDING_GRADIENT price_bidding_gradient,  price.TAX_RATE price_tax_rate,  price.TAX_FREE_PRICE price_tax_free_price,  price.RESERVE_PRICE price_reserve_price,  item.PRODUCT_NAME item_product_name,  item.PRODUCT_NO item_product_no,  item.PACKAGES item_packages,  item.ORIGIN_PLACE item_origin_place,  item.WAREHOUSE_NAME item_warehouse,  item.PIECE_UNIT item_piece_unit,  item.TRADING_WEIGHT item_trading_weight  from bdt_batch batch  left join bdt_resources_item item on item.batch_id = batch.id left join bdt_price_info price on price.batch_id = batch.id and item.id = price.item_id  where batch.member_code = #{memberCode,jdbcType=VARCHAR}<!--  and batch.id = 'P170508005' -->  <if test="id != null and id != '' ">  and batch.id like '%${id}%'  </if>  <if test="startTime != null and startTime != '' ">  and batch.batch_date >= #{startTime,jdbcType=TIMESTAMP}  </if>  <if test="endTime != null and endTime != '' ">  and batch.batch_date <= #{endTime,jdbcType=TIMESTAMP}  </if>  <if test="batchState != null and batchState != '' ">  and batch.batch_state = #{batchState,jdbcType=VARCHAR}  </if><if test="sidx != null and sidx != '' ">  order by batch.${sidx} ${sord}  </if>  <if test="sidx == null or sidx ==''">  order by batch.id desc  </if>  </select>
<resultMap type="com.ouyeel.chem.bdt.entity.vo.BatchManagerViewVo" id="batchInfoMap">        <!-- association字面意思关联,这里只专门做一对一关联; property表示是com.mybatis.bean.StudentTemp中的属性名称;             javaType表示该属性是什么类型对象 -->        <!-- property 表示com.mybatis.bean.Class中的属性; column 表示表中的列名 -->        <id property="id" column="id"/>    <result property="batchName" column="batch_name"/>    <result property="startTime" column="batch_start_time"/>    <result property="endTime" column="batch_end_time"/>    <result property="isDirectionalBid" column="batch_is_direc"/>    <result property="batchState" column="batch_state"/>    <result property="buyerDeposit" column="batch_buyer_deposit"/>    <result property="biddingType" column="batch_bidding_type"/>    <result property="offerType" column="batch_offer_type"/>    <result property="batchDate" column="batch_date"/>    <result property="announcementDay" column="batch_announ"/>    <result property="bidDay" column="batch_bid_day"/>        <!-- property表示集合类型属性名称,ofType表示集合中的对象是什么类型 -->        <collection property="priceInfo" ofType="com.ouyeel.chem.bdt.entity.PriceInfoDto">            <id property="id" column="price_id"/>       <result property="startingPirce" column="price_starting_price"/>       <result property="biddingGradient" column="price_bidding_gradient"/>       <result property="taxRate" column="price_tax_rate"/>       <result property="taxFreePrice" column="price_tax_free_price"/>       <result property="reservePrice" column="price_reserve_price"/>        </collection>       <!--  property表示集合类型属性名称,ofType表示集合中的对象是什么类型 -->        <collection property="resourceItem" ofType="com.ouyeel.chem.bdt.entity.ResourcesItemDto">       <result property="productName" column="item_product_name"/>       <result property="productNo" column="item_product_no"/>       <result property="packages" column="item_packages"/>       <result property="originPlace" column="item_origin_place"/>       <result property="warehouseName" column="item_warehouse"/>       <result property="pieceUnit" column="item_piece_unit"/>       <result property="tradingWeight" column="item_trading_weight"/>        </collection>  </resultMap>

mybatis参数为对象中包含list情况处理

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

实体类如下:

package com.kxlive.erp.sc.stock.vo; import java.util.Date;import java.util.List; import org.springframework.format.annotation.DateTimeFormat; import com.kxlive.erp.sc.stock.po.PurchaseDeliver; public class QueryPurchaseDeliverVo extends PurchaseDeliver{ private Long merchantId;private Long stockId;@DateTimeFormat(pattern = "yyyy-MM-dd")private Date startTime;//发货开始时间@DateTimeFormat(pattern = "yyyy-MM-dd")private Date endTime;//发货结束时间 private Integer page;//当前页private Integer rows;//每页记录数private String stockName;//仓库名private String supplierName;//供应商名称private List<Long> condSupplierIds;//供应商IDsprivate List<Integer> condStatuss;//状态spublic Date getStartTime() {return startTime;}public void setStartTime(Date startTime) {this.startTime = startTime;} public Date getEndTime() {return endTime;} public void setEndTime(Date endTime) {this.endTime = endTime;} public Integer getPage() {return page;} public void setPage(Integer page) {this.page = page;} public Integer getRows() {return rows;} public void setRows(Integer rows) {this.rows = rows;} public String getStockName() {return stockName;} public void setStockName(String stockName) {this.stockName = stockName;} public String getSupplierName() {return supplierName;} public void setSupplierName(String supplierName) {this.supplierName = supplierName;} public List<Long> getCondSupplierIds() {return condSupplierIds;} public void setCondSupplierIds(List<Long> condSupplierIds) {this.condSupplierIds = condSupplierIds;} public List<Integer> getCondStatuss() {return condStatuss;} public void setCondStatuss(List<Integer> condStatuss) {this.condStatuss = condStatuss;} public Long getMerchantId() {return merchantId;} public void setMerchantId(Long merchantId) {this.merchantId = merchantId;} public Long getStockId() {return stockId;} public void setStockId(Long stockId) {this.stockId = stockId;} }

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

  <select id="selectPurchaseDeliverByPrimaryKeySelective" resultMap="purchaseResultMap">    selectt2. name stock_name,t3. supplier_name, t1.*fromT_SC_PURCHASE_DELIVER t1left join T_SC_STOCK t2 on t1.purchase_stock_id = t2.idleft join T_SC_SUPPLIER t3 on t1.supplier_id = t3.id    <where>    <if test="queryCondition.ifDel != null">    and t1.if_del=#{queryCondition.ifDel,jdbcType=INTEGER}    </if>     <if test="queryCondition.condSupplierIds != null">    and t1.supplier_id in    <foreach collection="queryCondition.condSupplierIds" item="supplierId" index="index" separator="," open="(" close=")">    #{queryCondition.condSupplierIds[${index}],jdbcType=BIGINT}    </foreach>    </if>    <if test="queryCondition.condStatuss != null">    and t1.status in    <span style="color:#ff0000;"><foreach collection="queryCondition.condStatuss" item="status"  separator=","  index="index" open="(" close=")">    #{queryCondition.condStatuss[${index}],jdbcType=INTEGER}    </foreach></span>    </if>    <if test="queryCondition.merchantId != null">    and t1.merchant_id=#{queryCondition.merchantId,jdbcType=BIGINT}    </if>        <if test="queryCondition.stockId != null">    and t1.purchase_stock_id=#{queryCondition.stockId,jdbcType=BIGINT}    </if>    <if test="queryCondition.startTime != null">     <![CDATA[ and DATE_FORMAT(t1.create_time, '%Y-%m-%d') >=  DATE_FORMAT(#{queryCondition.startTime}, '%Y-%m-%d')]]>     </if>    <if test="queryCondition.endTime != null">     <![CDATA[ and DATE_FORMAT(t1.create_time, '%Y-%m-%d') <=  DATE_FORMAT(#{queryCondition.endTime}, '%Y-%m-%d')]]>     </if>    <if test="queryCondition.name != null and queryCondition.name != '' ">    and t1.name like CONCAT('%', #{queryCondition.name, jdbcType=VARCHAR}, '%')     </if>    <if test="queryCondition.deliverNo != null">    and t1.deliver_no like CONCAT('%', #{queryCondition.deliverNo, jdbcType=VARCHAR}, '%')     </if>    </where>    order by t1.create_time desc  </select>

标红的地方,即为应用。在foreach循环中,引用index作为list的下标,这样即可将对象中的所有数据取出。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

只有流过血的手指才能弹出世间的绝唱。

mybatis配置对象包含对象以及List的方式

相关文章:

你感兴趣的文章:

标签云: