下面分別來看看上述三種狀況的示例代碼:html
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>
@Test public voiddynamicForeachTest() { SqlSessionsession = Util.getSqlSessionFactory().openSession(); BlogMapperblogMapper = session.getMapper(BlogMapper.class); List<Integer> ids = newArrayList<Integer>(); ids.add(1); ids.add(3); ids.add(6); List<Blog> blogs =blogMapper.dynamicForeachTest(ids); for (Blogblog : blogs) System.out.println(blog); session.close(); }
<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>
@Test public voiddynamicForeach2Test() { SqlSessionsession = Util.getSqlSessionFactory().openSession(); BlogMapperblogMapper = session.getMapper(BlogMapper.class); int[] ids =new int[] {1,3,6,9}; List<Blog> blogs =blogMapper.dynamicForeach2Test(ids); for (Blogblog : blogs) System.out.println(blog); session.close(); }
<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>
@Test public voiddynamicForeach3Test() { SqlSessionsession = Util.getSqlSessionFactory().openSession(); BlogMapperblogMapper = session.getMapper(BlogMapper.class); finalList<Integer> ids = newArrayList<Integer>(); ids.add(1); ids.add(2); ids.add(3); ids.add(6); ids.add(7); ids.add(9); Map<String, Object> params = newHashMap<String, Object>(); params.put("ids", ids); params.put("title", "中國"); List<Blog> blogs =blogMapper.dynamicForeach3Test(params); for (Blogblog : blogs) System.out.println(blog); session.close(); }