1. 程式人生 > >mybatis傳遞動態表名查表 多表條件插入

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}, ...)