myBatis( sql片段,foreache)

myBatis(sql片段)

//将片段提取出来,命名后,在引用的地方用<include refid=></include>     <sql id=if>             <if test=title != null>                 and title =#{title}             </if>             <if test=author != null>                 and author=#{author}             </if>     </sql>      <!--某列的if模糊查询,全部if都会判断-->     <select id=QueryBlog resultType=pojo.Blog parameterType=map>         select * from myBatis.blog <where>     <include refid=if></include> </where>     </select> 

注意

  1. 最好基于单表的操作
  2. 不要存在where标签,where标签会修改片段符号

foreache

blogMapper.xml

    <select id=QueryBogForeach resultType=pojo.Blog parameterType=map>         /* select * from myBatis.blog where id in(1 ,2 ,3)*/         select * from myBatis.blog         <where>         <foreach collection=ids item=IID open=id in ( close=) separator=,>           /*这里内容是每一个IID,IID是ids集合的每一项元素,需要往ids集合填充元素*/             #{IID}         </foreach>         </where>     </select> 

测试

 @org.junit.Test     public void QueryBogForeach() {         SqlSession sqlSession = myBatisUtils.getSqlSession();         BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);          Map<String, Object> map = new HashMap<>();          //创建一个集合填充ids的集合         ArrayList<Integer> IDs = new ArrayList<>();         map.put(ids, IDs);         IDs.add(1);          List<Blog> blogs = mapper.QueryBogForeach(map);         for (Blog blogg : blogs) {             System.out.println(blogg);         }         sqlSession.close();     }