提取代码片段
<sql id="if-title-author">
<if test="title!=null">
and title=#{title}
</if>
<if test="author!=null">
and author=#{author}
</if>
</sql>
引用代码片段 实现代码复用
注意:最好基于单表定义sql片段
不要存在where标签
<where>
<include refid="if-title-author">
</include>
</where>
foreach
- 实例
实现将查询结果进行拆分,按照特性形式组装返回 - 测试代码
@Test
public void queryBlogForeach(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper8 mapper = sqlSession.getMapper(BlogMapper8.class);
HashMap map = new HashMap();
ArrayList<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(2);
map.put("ids",ids);
List<Blog> blogs = mapper.queryBlogForeach(map);
for (Blog blog : blogs) {
System.out.println(blog);
}
sqlSession.close();
}
- blogMapper.xml下的queryBlogForeach方法
<select id="queryBlogForeach" parameterType="map" resultType="blog">
select * from mybatis.blog
<where>
<foreach collection="ids" item="id" open="and (" close=")" separator="or">
id=#{id}
</foreach>
</where>
</select>