一. 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); }