Tabla de contenido
Conjunto vacío
Aquí la colección es el nombre de la lista definido por el mapeador, no el tipo de datos
<if test="list!=null and list.size()>0">
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
colección vacía 2
En MyBatis, foreach
cuando usas la etiqueta para atravesar elementos de la colección, puedes agregar fuera de ella <if>
para juzgar si la colección está vacía o no. El código de ejemplo es el siguiente:
<select id="queryUserByIds" resultType="User">
select * from user where id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
<if test="ids == null or ids.isEmpty()">
<bind name="ids" value="'-1'" />
</if>
</select>
En el código anterior, el atributo <if>
en la etiqueta test
determina ids
si la colección es nula o vacía. Si los ID de la colección están vacíos, use bind
la etiqueta para inicializar los ID, aquí configurados en -1. Al usar la etiqueta foreach para recorrer la colección, si ids es nulo o está vacío, no ingresará al bucle foreach.
Puede juzgar si la colección está vacía utilizando la etiqueta if fuera de la etiqueta foreach y luego realizar operaciones posteriores según la situación.
matriz vacía
Aquí la colección es el nombre de la matriz definido por el mapeador, no el tipo de datos
<if test="arr!=null and arr.length>0">
<foreach collection="array" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
datos vacíos 2
En MyBatis, también puedes usar expresiones OGNL para determinar si la matriz está vacía. Esto se puede lograr usando:
<select id="findUsersByIds" resultMap="user">
SELECT *
FROM user
WHERE user_id IN
<foreach item="id" collection="ids" separator="," open="(" close=")">
#{id}
</foreach>
<if test="ids != null and ids.length > 0">
AND status=1
</if>
</select>
En el ejemplo anterior, ids
queremos juzgar si se trata de una matriz vacía y if
la expresión OGNL se usa en la etiqueta para juzgar.
¡Por favor, dale me gusta si es útil y desarrolla un buen hábito!
¡Por favor deje un mensaje de aliento, comunicación y preguntas!