Mybatis之多種數據類型的批量的更新數據庫表

我想實現的效果是:更新cap_fo_order表的訂單狀態=待審覈、時間=當前,更新條件是訂單id在(id1,id2,id3等多個)範圍中並且(訂單狀態 = “01” and 訂單狀態的描述 = “初始化”) 。這也就意味着我必須傳遞多個不同類型的參數。

話不多說,上代碼展示:
//FoOrderRepository文件批量的更新數據庫的表

Integer updateMulity(@Param("orderStatus") String orderStatus, @Param("orderStatusDesc") String orderStatusDesc, @Param("updateTime") Date updateTime, @Param("whereIds") List<String> whereIds, @Param("whereOrderStatusAndDesc") Map<String, String> whereOrderStatusAndDesc);

//FoOrderMapper文件的批量更新數據庫表的sql

Integer updateMulity(@Param("orderStatus") String orderStatus, @Param("orderStatusDesc") String orderStatusDesc, @Param("updateTime") Date updateTime, @Param("whereIds") List<String> whereIds, @Param("whereOrderStatusAndDesc") Map<String, String> whereOrderStatusAndDesc);

//Mybatis中的sql語句

<update id="updateMulity" parameterType="java.util.Map" > UPDATE cap_fo_order SET status = #{orderStatus,jdbcType=VARCHAR}, status_desc = #{orderStatusDesc,jdbcType=VARCHAR}, update_time = #{updateTime,jdbcType=TIMESTAMP}WHERE id in <foreach collection="whereIds" item="item" index="index" open="(" separator="," close=")" > #{item} </foreach> and <foreach collection="whereOrderStatusAndDesc" item="item" index="index" open="(" separator="or" close=")" > (status = #{index} and status_desc = #{item}) </foreach> </update>

//最後在serviceImpl層進行事物級別的校驗,防止髒數據和被篡改

Integer updateResult = foOrderService.updateMulity(orderStatus, orderStatusDesc, updateTime, whereIds, whereOrderStatusAndDesc);
assertEquals("Error:cancleOrTradeRefund -> updateMulity - 批量更新操作失敗。",new Integer(orderIdArray.size()), updateResult);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章