Foreach는 주로 조건을 구축하는 데 사용되며 SQL 문의 컬렉션을 반복 할 수 있습니다. Foreach 요소의 속성에는 주로 항목, 인덱스, 수집, 개방형, 분리기 및 닫기가 포함됩니다. 항목은 컬렉션의 각 요소가 반복 될 때 별칭을 나타냅니다. 색인은 반복 프로세스 중에 각 반복에 도달하는 위치를 나타내는 이름을 지정합니다. Open은 문으로 시작하는 것을 나타내고, 분리기는 각 반복 사이의 분리기로 사용되는 기호를 나타내며, 닫기는 끝을 나타냅니다. Foreach를 사용할 때 가장 중요하고 오류가 발생하기 쉬운 것은 수집 속성입니다. 이 속성은 지정되어야하지만 다른 경우 속성의 값이 다릅니다. 세 가지 주요 상황이 있습니다.
1. 단일 매개 변수로 전달되고 매개 변수 유형이 목록 인 경우 수집 속성 값이 목록입니다.
2. 단일 매개 변수로 전달되고 매개 변수 유형이 배열 인 경우 컬렉션의 속성 값은 배열입니다.
3. 여러 매개 변수가 전달되면 맵을지도로 캡슐화해야합니다. 물론 단일 매개 변수를 맵으로 캡슐화 할 수도 있습니다. 실제로 매개 변수를 전달하면 유방지도에 캡슐화됩니다. 맵의 키는 매개 변수 이름이므로 현재로서는 컬렉션 속성 값이 자체적으로 캡슐화 된 맵의 전달 된 목록 또는 배열 객체의 키입니다.
위의 세 가지 상황에 대한 예제 코드를 살펴 보겠습니다.
1. 단일 매개 변수 목록의 유형 :
<id id = "dynamicFeReachTest"resultType = "blog"> select * select in <foreach collection = "list"index = "index"item = "item"open = "("seplicator = ","close = ")"> {item} </foreach> </select>위의 컬렉션의 값은 목록이며 해당 매퍼는 다음과 같습니다.
공개 목록 <blog> DynamicForeachTest (list <integer> ids);
테스트 코드 :
@TestPublic void DynamicFeReachTest () {sqlsession session = util.getSqlSessionFactory (); OpenSession (); blogmapper blogmapper = session.getMapper (blogmapper.class); ids = new arraylist <integer> (); ids.llog (3); ids. = blogmapper.dynamicforeachTest (IDS); for (블로그 블로그 : 블로그) system.out.println (blog); session.close ();}2. 단일 매개 변수 배열의 유형 :
<id id = "dynamicforeach2test"resulttype = "blog"> select * ind in <foreach collection = "array"index = "index"item = "item"olope = "("seplicator = ","close = ")"> {item} </foreach> </select>위의 컬렉션은 배열, 해당 매퍼 코드입니다.
공개 목록 <blog> dynamicforeach2test (int [] ids);
해당 테스트 코드 :
@TestPublic void DynamicFeReach2Test () {sqlsession session = util.getSqlSessionFactory (); OpenSession (); blogmapper blogmapper = session.getMapper (blogmapper.class); inds = new int [] {1,3,6,9}; list> list (blogl blog); 블로그) System.out.println (블로그); session.close ();}3. 매개 변수를 직접 맵 유형으로 캡슐화합니다.
< "dynamicforeach3test"resulttype = "blog"> select * select * select * select * select * select * select * select * select * select * select * select * select * select * select * select * select * select * select * select * select * select where t_blog where "%"#{title} "%"및 id in <foreach collection = "index"item = "item"open = "("separator = ","close = ")") ">#{item} </foreach> </select>위의 컬렉션의 값은 ID이며, 이는 전달 된 매개 변수 맵의 키와 해당 매퍼 코드입니다.
공개 목록 <blog> dynamicforeach3test (map <string, object> params);
해당 테스트 코드 :
@TestPublic void DynamicFeReach3Test () {sqlsession session = util.getSqlSessionFactory (); OpenSession (); blogmapper blogmapper = session.getMapper (blogmapper.class); integer> ids = new arraylist <integer> (); ids.add (1); ids.add (2); ids.add (3); ids.add (6); ids.add (7); ids.add (9); map <문자열, 객체> params = new Hashmap <String, object> (), params.put ( "ids", ids); title "," "," "," "," blogmapper.dynamicforeach3test (params); for (블로그 블로그 : 블로그) System.out.println (blog); session.close ();}위는 편집자가 소개 한 Mybatis의 Foreach 진술에 대한 자세한 설명에 대한 관련 지식입니다. 나는 그것이 당신에게 도움이되기를 바랍니다!