resultmap query parametertype parameter example ejemplo java sql ibatis

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>