對於函數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文件中,加入:
- statementType="STATEMENT"
- ${}代替#{},如insert into ¥{tableName} value (${item_id}, ${o_rev_id}, ...)