MyBatis의 foreach 문구 상세 정보
1. 매개 변수가 단일 매개 변수이고 매개 변수 형식이 List일 때,collection 속성 값은list
2. 단일 매개 변수와 매개 변수 형식이array 그룹일 때collection의 속성 값은array
3. 전송된 매개 변수가 여러 개일 때 우리는 그것들을 하나의 맵으로 봉인해야 한다. 물론 단일 매개 변수도 맵으로 봉인할 수 있다. 실제로 매개 변수를 전송할 때breast 안에서도 맵으로 봉인한다. 맵의 키는 매개 변수 이름이다. 그래서 이때 컬렉션 속성 값은 전송된 List나array 대상이 자신이 봉인된 맵에 있는 키이다.
다음은 상기 세 가지 상황의 예시 코드를 살펴보겠습니다.
1. 단일 매개변수 List 유형:
<select id="dynamicForeachTest" resultType="Blog">
select * from t_blog where id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
상술한 컬렉션의 값은list입니다. 대응하는 Mapper는 이렇습니다.
public List<Blog> dynamicForeachTest(List<Integer> ids);
테스트 코드:
@Test
public void dynamicForeachTest() {
SqlSession session = Util.getSqlSessionFactory().openSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
List<Integer> ids = new ArrayList<Integer>();
ids.add(1);
ids.add(3);
ids.add(6);
List<Blog> blogs = blogMapper.dynamicForeachTest(ids);
for (Blog blog : blogs)
System.out.println(blog);
session.close();
}
2. 단일 매개변수 array 배열의 유형:
<select id="dynamicForeach2Test" resultType="Blog">
select * from t_blog where id in
<foreach collection="array" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
상기 collection은 array로 대응하는 Mapper 코드입니다.
public List<Blog> dynamicForeach2Test(int[] ids);
테스트 코드:
@Test
public void dynamicForeach2Test() {
SqlSession session = Util.getSqlSessionFactory().openSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
int[] ids = new int[] {1,3,6,9};
List<Blog> blogs = blogMapper.dynamicForeach2Test(ids);
for (Blog blog : blogs)
System.out.println(blog);
session.close();
}
3. 스스로 매개 변수를 맵 형식으로 봉인
<select id="dynamicForeach3Test" resultType="Blog">
select * from t_blog where title like "%"#{title}"%" and id in
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
상기 collection의 값은 ids로 전송된 매개 변수 맵의 키이며 대응하는 Mapper 코드입니다.
public List<Blog> dynamicForeach3Test(Map<String, Object> params);
테스트 코드:
@Test
public void dynamicForeach3Test() {
SqlSession session = Util.getSqlSessionFactory().openSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
final List<Integer> ids = new ArrayList<Integer>();
ids.add(1);
ids.add(2);
ids.add(3);
ids.add(6);
ids.add(7);
ids.add(9);
Map<String, Object> params = new HashMap<String, Object>();
params.put("ids", ids);
params.put("title", " ");
List<Blog> blogs = blogMapper.dynamicForeach3Test(params);
for (Blog blog : blogs)
System.out.println(blog);
session.close();
}
상기 서술한 것은 편집자가 여러분께 소개한 My Batis의 foreach 문장에 대한 상세한 지식입니다. 여러분께 도움이 되기를 바랍니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.