<if test="title != null"> AND title like #{title} </if>
choose、when、otherwise
类似Java中的switch语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
<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>
trim、where、set
where
子元素返回任何内容是才会插入”WHERE“子句
去除开头的”AND“、”OR",意味着你可以任性的这么写了
1 2 3 4 5 6 7
<where> ... <if test="title != null"> AND title like #{title} </if> ... </where>
<select id="selectPostIn" resultType="domain.blog.Post"> SELECT * FROM POST P WHERE ID in <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach> </select>
<select id="selectBlogsLike" resultType="Blog"> <bind name="pattern" value="'%' + _parameter.getTitle() + '%'" /> SELECT * FROM BLOG WHERE title LIKE #{pattern} </select>