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>

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/database/4901.html

(0)
上一篇 2021年7月16日 23:18
下一篇 2021年7月16日 23:21

相关推荐

发表回复

登录后才能评论