Foreach se usa principalmente en la construcción en condiciones, puede iterar sobre una colección en declaraciones SQL. Los atributos del elemento foreach incluyen principalmente elemento, índice, colección, abierto, separador y cierre. El elemento representa el alias cuando se itera cada elemento en la colección. El índice especifica un nombre para representar la posición a la que se alcanza cada iteración durante el proceso de iteración. Open representa lo que comienza con la declaración, el separador representa qué símbolos se usan como separadores entre cada iteración, y Close representa lo que termina. Lo más crítico y propenso a los errores al usar ForEach es el atributo de colección. Este atributo debe especificarse, pero en diferentes casos, el valor del atributo es diferente. Hay tres situaciones principales:
Si el pasado es un solo parámetro y el tipo de parámetro es una lista, el valor del atributo de colección es una lista.
Si el pasado es un solo parámetro y el tipo de parámetro es una matriz, el valor de la propiedad de la colección es una matriz.
Si se pasan múltiples parámetros, necesitamos encapsularlos en un mapa. Por supuesto, un solo parámetro también se puede encapsular en un mapa. De hecho, si pasa en los parámetros, también se encapsulará en un mapa en mybatis. La clave del mapa es el nombre del parámetro, por lo que en este momento el valor del atributo de colección es la clave de la lista pasada o el objeto de matriz en el mapa encapsulado por sí mismo.
Practiquemoslo a través del código:
Tabla de datos:
Usando la tabla HR.Employee de Oracle
Entidad: empleados
Empleados de clase pública {Integer Integer EmployeId; cadena privada FirstName; cadena privada lastname; correo electrónico de cadena privada; Cadena privada PhoneNumber; Fecha privada contratada; Cadena privada JobId; salario privado bigdecimal; Comisión Privada de Bigdecimal PCT; Integer Gerente de Integer; Departamento de breve privado;}Mapeo de archivos:
< separator=","> #{employeeId} </foreach> </select> <!--Array: The collection attribute type in forech is array, the value of collection must be: list, item value can be arbitrary, and the parameter names in the Dao interface are arbitrary--> <select id="getEmployeesArrayParams" resultType="Employees"> select * from EMPLOYEES e where e.EMPLOYEE_ID in <foreach colección = "Array" item = "EmployeEd" index = "index" open = "(" cerrador = ")" separator = ","> #{empleadoID} </ foreach> </select> <!-map: no solo el atributo de colección en forech es map.key, pero todos los demás atributos son map.key, como el siguiente departamento de departamento-> <select id = "getEmployEsmappeams" ResultyPe "Resultados". <Where> <if test = "departamid! = null y departamid! = ''"> e.department_id =#{departamid} </if> <if test = "EmployeeIdSArray! = NULL y EmployeeIdsArray.length! = 0"> y e.Employee_id en <foreach Collection = "itemeional" ÍNDEM = "ÍNDICE") #{EmployeeId} </foreach> </if> </where> </select>Clase mapeador:
Public Interface EmployeeSmapper {List <Maites> GetEmployEesSListParams (List <String> EmployeeSIDS); Lista <Elopes> GetEmployeAsArrayParams (String [] EmployeeIds); List <Elp.) GetEmployEesMapParams (map <string, object> params);}Lo anterior es la descripción completa del método de escritura de los parámetros del mapa de la matriz de la lista de la lista entrante de MyBatis presentados por el editor. ¡Espero que sea útil para todos!