A foreach é usada principalmente na construção em condições, pode iterar sobre uma coleção em declarações SQL. Os atributos do elemento foreach incluem principalmente itens, índices, coleta, abertura, separador e fechamento. O item representa o alias quando cada elemento da coleção é iterado. O índice especifica um nome para representar a posição na qual cada iteração é atingida durante o processo de iteração. O Open representa o que começa com a declaração, o separador representa quais símbolos são usados como separadores entre cada iteração e o fechamento representa o que termina. A coisa mais crítica e mais propensa a erros ao usar o foreach é o atributo de coleção. Esse atributo deve ser especificado, mas em diferentes casos, o valor do atributo é diferente. Existem três situações principais:
Se o passado é um único parâmetro e o tipo de parâmetro for uma lista, o valor do atributo de coleta será a lista.
Se o passado é um único parâmetro e o tipo de parâmetro for uma matriz, o valor da propriedade da coleção será a matriz.
Se houver vários parâmetros passados, precisamos encapsulá -los em um mapa. Obviamente, um único parâmetro também pode ser encapsulado em um mapa. De fato, se você passar em parâmetros, ele também será encapsulado em um mapa em Mybatis. A chave do mapa é o nome do parâmetro; portanto, neste momento, o valor do atributo de coleção é a chave da lista ou objeto de matriz passada no mapa encapsulado por si mesmo.
Vamos praticar através do código:
Tabela de dados:
Usando a tabela Hr.Employes da Oracle
Entidade: funcionários
Public Class Funcionários {private Integer FuncionárioID; String privada primeiro nome; string privada stringname; e -mail privado de string; PhoneNumber de cordas privadas; data privada contratada; Private String Jobid; Salário BigDecimal Privado; Comissão privada BigDecimalpct; Gerenciador inteiro privado; Departamento curto privado;}Arquivos de mapeamento:
Lista: O tipo de atributo de coleção no forech está na lista, o valor da coleção deve ser: Lista, o valor do item pode ser arbitrário e os nomes de parâmetros na interface Dao são arbitrários-> <select id = "getemployeeeslistParams" resulttype = "funcionários"> selecione * e onde e.employee_id "" " Separator = ","> #{Funcionário} </foreach> </leclect> <!-Array: o tipo de atributo de coleção em forech é a matriz, o valor da coleção deve ser: Lista, o valor do item pode ser arbitrário e os nomes de parâmetros da DAO são "seletos", "selecione", e os nomes de parâmetros * seletos na interface "select * seledemeados * seletemeados * seletos * seletos * seledemed * seleteypaty" seledemenda * seleteys * selet * seled) e seletos * seledears * selet * seled) e seletos * seledears * seledeirs na interface " * seletemeam) Coleção = "Array" Item = "EmployeeID" index = "Index" Open = "(" Close = ")" Separator = ","> #{EmployeeId} </foreach> </leclect> <!-map: não apenas o atributo de coleção no FORNAPTH = Map.Key, mas todos os outros atributos são map.key, como o seguinte departamento-> <select = " <where> <se test = "departmentId! = nulo e departamentoID! = ''"> e.department_id =#{departamentId} </if> <if test = "FEXHEGYIDSARRAY! = NULL e FEXHERIDSARRAY.LEXTEM! assClasse de mapeador:
Public Interface FuncionárioMapper {List <Gursion> getemployeeeslistParams (list <string> funcionários); List <Gursion> getEmployeeseArrayParams (String [] Funcionário); Lista <Furion> getemployeesmapparams (map <string, object> params);}O exposto acima é a descrição completa do método de escrita dos parâmetros do mapa de matriz de set de aparelhos de entrada Mybatis apresentados a você pelo editor. Espero que seja útil para todos!