2016-05-16 44 views
0

得到的結果我有一個MyBatis選擇SQL這樣的:無法通過參數傳遞給MyBatis的

SELECT * FROM MYTABLE WHERE id IN (#{ids}) 

我傳入的參數ids是正確的,這雖然我調試,我可以得到。而且,我可以在參數MySQL中正確運行SQL並獲得結果。

但是沒有任何東西與Java代碼一起運行。

我印刷的MyBatisSQLSQL是這樣的:

SELECT * FROM MYTABLE WHERE id IN (?) 

和在日誌中示出的參數是正確的太('1', '2', '3')。

爲什麼我無法通過代碼獲取數據?

我會很感激,如果任何人都可以提供幫助。

+0

您的參數'ids'是哪種類型? 'String'或'List'? – Blank

+0

將ID組合成一個'String'。 – Sky

回答

0

您需要使用<foreach>作爲described in the documentation

See this其他SO問題,如果你使用註釋。

+0

謝謝,波格丹。這工作。這是唯一的方法嗎?我不能只用'String'傳入參數嗎? – Sky

+0

@天空:你的SQL與一個字符串就像這樣結束:'WHERE id IN(?)'。你真正想要的是這樣的:'WHERE id IN(?,?,...,?,?)'你通過迭代列表獲得。 – Bogdan

+0

是的,但我有正確的格式,參數字符串是'1','2','3',正好是'IN'解析的那個。 – Sky