java - query - ¿Cómo usar una cláusula IN en iBATIS?
parametertype mybatis (6)
Aquí hay una entrada de blog que responde a su pregunta:
iBatis: soporte para matriz o parámetro de lista con palabra clave SQL IN
<select id="select-test" resultMap="MyTableResult" parameterClass="list">
select * from my_table where col_1 in
<iterate open="(" close=")" conjunction=",">
#[]#
</iterate>
</select>
Y en Java debes pasar en una java.util.List. P.ej
List<String> list = new ArrayList<String>(3);
list.add("1");
list.add("2");
list.add("3");
List objs = sqlMapClient.queryForList("select-test",list);
Estoy usando iBATIS para crear declaraciones selectas. Ahora me gustaría implementar la siguiente declaración SQL con iBATIS:
SELECT * FROM table WHERE col1 IN (''value1'', ''value2'');
Con el siguiente enfoque, la declaración no se prepara correctamente y no se devuelve ningún resultado:
SELECT * FROM table WHERE col1 IN #listOfValues#;
iBATIS parece reestructurar esta lista e intenta interpretarla como una cadena.
¿Cómo puedo usar la cláusula IN correctamente?
O:
<select id="select-test" resultMap="MyTableResult" parameterClass="list">
select * from table where
<iterate property="list" conjunction="OR">
col1 = #list[]#
</iterate>
</select>
Puedes usarlo así:
<select id="select-test" resultMap="MyTableResult" >
select * from my_table where col_1 in
$listOfValues$
</select>
use el $ en la sentencia IN.
Qué tal si
<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>
Una pregunta antigua, pero para los usuarios de MyBatis, la sintaxis es un poco diferente:
<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>
Consulte la guía aquí .
<select id="select-test" parameterClass="list"resultMap="YourResultMap">
select * from table where col_1 IN
<iterate open="(" close=")" conjunction=",">
#[]#
</iterate>
</select>