mybatis傳遞動態表名查表 多表條件插入

對於函數saveOrUpdateProcessedReviewsBySource(String source, ProcessedReviews pr)
有個問題困擾了很久:需要根據來源source的不同,決定把評論pr插入到哪張表。
例如source爲jd的話,則pr應該插入到jd_processed_reviews

考慮過能否用<if test=>標籤,但是嘗試後失敗。因爲函數有兩個參數,再xml中parameterType只能用於一個參數的情況,多參數時用#{0}, #{1},等等代替。因此想用#{0}表示source,#{1}表示pr,但不斷報些我不懂的錯,我猜是因爲我用了#{0}作爲判斷條件吧。

後來學長提醒我有“動態傳遞表名”這個東西!
在這兩個網址找到了解決方法:利用source得到表名,用哈希圖先把表名和pr中的屬性存起來,這樣相當於在外部對錶做了判斷。再用哈希圖作爲參數,這樣在xml文件中處理起來就方便很多,不需要進行判斷。

有兩個要注意的:xml文件中,加入:
  1. statementType="STATEMENT"
  2. ${}代替#{},如insert into ¥{tableName} value (${item_id}, ${o_rev_id}, ...)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章