Choose:
只选择第一个成立的条件执行。后面的条件不对结果产生影响。
使用:
- 编写接口:
List<Book> queryBookByChoose(Map map);
编写配置文件
<select id="queryBookByChoose" parameterType="map" resultType="Book">
select * from book
<where>
<choose>
<when test="name!=null">
name=#{name}
</when>
<when test="author!=null">
and author=#{author}
</when>
<otherwise>
and seal=#{seal}
</otherwise>
</choose>
</where>
</select>
- 测试:
@org.junit.Test
public void testIf(){
SqlSession sqlSession=MyBatisUtils.getSqlSession();
BookMapper bookMapper=sqlSession.getMapper(BookMapper.class);
HashMap map=new HashMap();
map.put("name","三国");
//map.put("author","罗贯中");
map.put("seal",9990);
List<Book> bookList= bookMapper.queryBookByChoose(map);
for (Book book : bookList) {
System.out.println(book);
}
sqlSession.close();
}
- 结果:
虽然第二个选择条件销量没有满足,但是第一个选择条件满足了,所以第二个选择条件就不会对结果产生影响。