<if>
标签:是与(and
)的关系。<-- 通过 title 和 author 同时进行筛选 --> <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = 'ACTIVE' <if test="title != null"> AND title like #{title} </if> <if test="author != null and author.name != null"> AND author_name like #{author.name} </if> </select>
<choose>
标签:是或(or
)的关系。choose
标签是按顺序判断其内部when
标签中的test
条件出否成立,如果有一个成立,则choose
结束。- 当
choose
中所有when
的条件都不满则时,则执行otherwise
中的sql
。类似于Java
的switch
语句choose
为switch
,when
为case
,otherwise
则为default
。
<-- 通过 title 或 author 进行筛选 --> <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE state ='ACTIVE' <choose> <when test="title != null"> AND title like #{title} </when> <when test="author != null and author.name != null"> AND author_name like #{author.name} </when> <otherwise> AND featured = 1 </otherwise> </choose> </select>