1.SQL片段
有的时候,我们需要将一些功能的部分抽取出来方便复用
1.使用SQL标签抽取公共的部分
<sql id="if-title-author">
<if test="title != null">
title = #{title}
</if>
<if test="author!=null">
and author = #{author}
</if>
</sql>
2.在需要使用的地方使用include标签引用即可
<select id="queryBlogIf" parameterType="map" resultType="blog">
select * from mybatis.blog
<where>
<include refid="if-title-author"></include>
</where>
</select>
2.Foreach
BlogMapper接口
public interface BlogMapper {
//查询第1-3号记录的Blog
List<Blog> queryBlogForeach(Map map);
}
BlogMapper.xml
//select * from mybatis.blog where (id = 1 or id = 2 or id =3)
<select id="queryBlogForeach" parameterType="map" resultType="blog">
select * from mybatis.blog
<where>
<foreach collection="ids" 从ids集合中拿
item="id" 集合中的id值
open="and (" 拼接的头部
separator="or" 数据当中的分隔符
close=")"> 拼接的尾部
id = #{id} 拼接的字符
</foreach>
</where>
</select>
测试
@Test
public void testForEach() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
HashMap map = new HashMap();
ArrayList<Integer> ids = new ArrayList<Integer>();
ids.add(1);
ids.add(2);
ids.add(3);
map.put("ids",ids);
List<Blog> list = mapper.queryBlogForeach(map);
for (Blog blog : list) {
System.out.println(blog);
}
sqlSession.close();
}