MyBatis(二三):动态SQL之Foreach()

  本篇文章为你整理了MyBatis(二三):动态SQL之Foreach()的详细内容,包含有 MyBatis(二三):动态SQL之Foreach,希望能帮助你了解 MyBatis(二三):动态SQL之Foreach。

  前面我们已经学习了动态SQL的if、where、set、choose(when,otherwise),今天我们来学习剩下的foreach。

  什么时候用到foreach呢?比如说我们要查询一个表中id为1,3,4的数据,我们应该写SQL语句为:

  

select * 
from TABLE

 

  where (id=1 or id=3 or id=4)

 

  这时候我们就可以把需要查的这些id的数据存放到一个集合中,通过遍历这个集合来查询到这些数据,这种时候我们就用到foreach了。

  

  下面我们来看foreach的具体使用。

  还是先在BlogMapper接口中声明一个方法:

  

List Blog QueryBlogsByForeach(Map Object, Object map);

 

  然后配置BlogMapper.xml文件:

  

 select id="QueryBlogsByForeach" parameterType="map" resultType="Blog" 

 

   select * from mybaties.blog

   where

   foreach collection="authors" item="author" open="(" close=")" separator="or"

   author=#{author}

   /foreach

   /where

   /select

 

  这里我们来看上面的foreach标签,collection代表着集合的名字;item表示集合元素,名字自定义,但要与下面的#{}中的字段名一致;open和close代表两边的边界;separator代表分割元素的字段。

  接下来测试一下:

  

@Test

 

   public void queryBlogsForEache() {

   SqlSession sqlSession = MyBatisUtil.getSqlSession();

   BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);

   ArrayList String authors = new ArrayList ();

   Map Object, Object map = new HashMap ();

   map.put("authors", authors);

   List Blog blogList = blogMapper.QueryBlogsByForeach(map);

   for (Blog blog : blogList) {

   System.out.println(blog);

   sqlSession.close();

   }

 

  看上面的测试,我们是先声明了一个集合,然后将集合存入Map,相应的键就命名“authors”。

  测试结果如下:

  

  此时由于集合中没有任何元素,所以查询出来的就是所有的结果。

  接下来我们往集合里添加元素。

  

 @Test

 

   public void queryBlogsForEache() {

   SqlSession sqlSession = MyBatisUtil.getSqlSession();

   BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);

   ArrayList String authors = new ArrayList ();

   authors.add("jms");

   authors.add("jms1");

   authors.add("jms2");

   Map Object, Object map = new HashMap ();

   map.put("authors", authors);

   List Blog blogList = blogMapper.QueryBlogsByForeach(map);

   for (Blog blog : blogList) {

   System.out.println(blog);

   sqlSession.close();

   }

 

  测试结果如下:

  可以看见这次我们查询的是author=jms1 or author=jms2 or author=jms的结果。

  

  (本文仅作个人学习记录用,如有纰漏敬请指正)

  

  以上就是MyBatis(二三):动态SQL之Foreach()的详细内容,想要了解更多 MyBatis(二三):动态SQL之Foreach的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: