mybatis中sql標簽、where標簽、foreach標簽用法


<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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM