我正在使用iBATIS來創建選擇語句。現在,我想與iBATIS的執行下面的SQL語句:如何在iBATIS中使用IN子句?
SELECT * FROM table WHERE col1 IN ('value1', 'value2');
下列方法處理,沒有正確準備的發言並沒有結果回報:
SELECT * FROM table WHERE col1 IN #listOfValues#;
iBATIS的似乎重組這個名單和試圖將其解釋爲一個字符串。
如何正確使用IN子句?
我正在使用iBATIS來創建選擇語句。現在,我想與iBATIS的執行下面的SQL語句:如何在iBATIS中使用IN子句?
SELECT * FROM table WHERE col1 IN ('value1', 'value2');
下列方法處理,沒有正確準備的發言並沒有結果回報:
SELECT * FROM table WHERE col1 IN #listOfValues#;
iBATIS的似乎重組這個名單和試圖將其解釋爲一個字符串。
如何正確使用IN子句?
這裏有一個博客貼子,回答你的問題:
iBatis: Support for Array or List Parameter with SQL IN Keyword
<select id="select-test" resultMap="MyTableResult" parameterClass="list">
select * from my_table where col_1 in
<iterate open="(" close=")" conjunction=",">
#[]#
</iterate>
</select>
而且在Java中,你應該在 java.util.List的通。例如。
List<String> list = new ArrayList<String>(3);
list.add("1");
list.add("2");
list.add("3");
List objs = sqlMapClient.queryForList("select-test",list);
如何
<select id="foo" parameterClass="Quuxly" resultClass="Flobitz">
select * from table
<dynamic prepend="where col1 in ">
<iterate property="list_of_values" open="('" close="')" conjunction=", ">
#list_of_values[]#
</iterate>
</dynamic>
</select>
或者:
<select id="select-test" resultMap="MyTableResult" parameterClass="list">
select * from table where
<iterate property="list" conjunction="OR">
col1 = #list[]#
</iterate>
</select>
您可以使用它像這樣:
<select id="select-test" resultMap="MyTableResult" >
select * from my_table where col_1 in
$listOfValues$
</select>
使用$在IN聲明。
這會生成類似[aaa,abb,acc]的內容,你能否建議我如何將這個默認'[]'改成'()',因爲oracle不支持'[]' – Saif 2014-08-27 05:35:46
<select id="select-test" parameterClass="list"resultMap="YourResultMap">
select * from table where col_1 IN
<iterate open="(" close=")" conjunction=",">
#[]#
</iterate>
</select>
謹慎評論你的代碼?如果在2年前有9個upvotes的另一個被接受的答案,你的答案是什麼可以增加這個重要的答案? – Yaroslav 2012-10-05 10:00:12
一個老問題,但MyBatis的一個用戶,語法是有點不同:
<select id="selectPostIn" resultType="domain.blog.Post">
SELECT *
FROM POST P
WHERE ID in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
所有這些xml讓我想嘔吐,但thx的信息非常有用的項目,我必須使用ibatis – Rick 2011-12-09 20:04:05
我不能相信我只是upvoted一個iBatis的問題/答案。這個項目什麼時候結束,我可以停止使用iBatis? – 2012-12-05 15:49:57
那麼,iBatis是太棒了。至少你會寫SQL而不是其他一些可憎的東西。 – 2014-12-30 00:59:38