主表批量維護從表--從表實現

一. mapper 批量維護實現:java

<!-- 根據 Bid 批量新增 -->
<insert id="batchInsertByBid">
    insert into t_quote_(
        quote_type_,bid_id_,tender_id_,create_by_, attribute_name_,product_name_,product_type_,create_time_
    ) values
    <foreach collection="quoteList" item="item" separator=",">
        (1,#{bid.id},null,#{bid.createBy},#{item.attributeName},#{item.productName},#{item.productType},now())
    </foreach>
</insert>

<!-- 批量修改 -->
<update id="batchUpdateByList" parameterType="java.util.List">
    <foreach collection="quoteList" item="item" index="index" open="" close="" separator=";">
        update t_quote_
        <trim prefix="set" suffixOverrides=",">
            <if test='item.attributeName != null'>attribute_name_=#{item.attributeName,jdbcType=VARCHAR},</if>
            <if test='item.productName != null'>product_name_=#{item.productName,jdbcType=VARCHAR},</if>
            <if test='item.productType != null'>product_type_=#{item.productType,jdbcType=VARCHAR},</if>
        </trim>
        where id_ = #{item.id}
    </foreach>
</update>

<!-- 根據 Bid 批量刪除 -->
<delete id="batchDeleteByBidIdAndIdNotIn">
    delete from t_quote_ 
    where quote_type_ = 1 and bid_id_ = #{bidId} 
    <if test="null != quoteList and quoteList.size > 0"> 
        and id_ not in
        <foreach collection="quoteList" item="item" open="(" separator="," close=")">
            #{item.id}
        </foreach>
    </if>
</delete>

<!-- 根據 Bid 批量所有刪除 -->
<delete id="batchDeleteByBidIdAndIdNotIn">
    delete from t_quote_ 
    where quote_type_ = 1 and bid_id_ = #{bidId} 
</delete>

 

二. 接口層批量增刪改申明app

/**
 * 根據 Bid 批量新增
 * 
 * @param quoteList
 * @param bid
 * @return
 */
public int batchInsertByBid(@Param("quoteList") List<Quote> quoteList, @Param("bid") Bid bid);

/**
 * 批量修改
 * @param quoteList
 * @return
 */
public int batchUpdateByList(@Param("quoteList") List<Quote> quoteList);

/**
 * 根據 Bid 批量刪除
 * @param quoteList
 * @param bidId
 * @return
 */
public int batchDeleteByBidIdAndIdNotIn(@Param("quoteList") List<Quote> quoteList, @Param("bidId") Long bidId);
    
/**
 * 根據 Bid 批量所有刪除
 * @param bidId
 * @return
 */
public int batchDeleteByBidId(@Param("bidId") Long bidId);

 

三. 接口層批量維護實現,同時出現可能增刪改的業務 (JDK8能夠直接在 接口中寫實現方法,用default申明便可)ide

/**
 * 經過暴力方式 <所有刪除再所有新增> 批量維護
 * @param quoteList
 * @param bid
 */
public default void updateByBid(List<Quote> quoteList, Bid bid){    
    batchDeleteByBidId(bid.getId());
    if(quoteList.size() > 0)
        batchInsertByBid(quoteList, bid);
}

/**
 * 經過對比方式  <所有刪除再所有新增> 批量維護 
 * @param updQuoteList
 * @param addQuoteList
 * @param bid
 */
public default void updateByBid(List<Quote> updQuoteList, List<Quote> addQuoteList, Bid bid){    
    batchDeleteByBidIdAndIdNotIn(bid.getId(), updQuoteList);    
    if(updQuoteList.size() > 0)
        batchUpdateByList(updQuoteList);    
    if(addQuoteList.size() > 0)
        batchInsertByBid(addQuoteList, bid);
}
相關文章
相關標籤/搜索