<sql id="query_user_where"> <!-- 如果 userQueryVo中傳入查詢條件,再進行sql拼接--> <!-- test中userCustom.username表示從userQueryVo讀取屬性值--> <if test="userCustom!=null"> <if test="userCustom.username!=null and userCustom.username!=''"> and username like '%${userCustom.username}%' </if> <if test="userCustom.sex!=null and userCustom.sex!=''"> and sex = #{userCustom.sex} </if> <!-- 根據id集合查詢用戶信息 --> <!-- 最終拼接的效果: SELECT id ,username ,birthday FROM USER WHERE username LIKE '%小明%' AND id IN (16,22,25) collection:集合的屬性 open:開始循環拼接的串 close:結束循環拼接的串 item:每次循環取到的對象 separator:每兩次循環中間拼接的串 --> <foreach collection="ids" open=" AND id IN ( " close=")" item="id" separator=","> #{id} </foreach> <!-- SELECT id ,username ,birthday FROM USER WHERE username LIKE '%小明%' AND (id = 16 OR id = 22 OR id = 25) <foreach collection="ids" open=" AND ( " close=")" item="id" separator="OR"> id = #{id} </foreach> --> <!-- 還有很的查詢條件 --> </if> </sql>
1 <select id="findUserList" parameterType="userQueryVo" resultType="user"> 2 select id,username,birthday from user 3 <!-- where標簽相當 於where關鍵字,可以自動去除第一個and --> 4 <where> 5 <!-- 引用sql片段,如果sql片段和引用處不在同一個mapper必須前邊加namespace --> 6 <include refid="query_user_where"></include> 7 <!-- 下邊還有很其它的條件 --> 8 <!-- <include refid="其它的sql片段"></include> --> 9 </where> 10 </select>
