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>
注意
- 最好基于单表的操作
- 不要存在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(); }