mybatis中sql标签where标签foreach标签用法

Posted Boblim

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

 

以上是关于mybatis中sql标签where标签foreach标签用法的主要内容,如果未能解决你的问题,请参考以下文章

Java51Mybatis:两个xml文件的标签,动态sql的if/choose/where/set/foreach标签

SQL动态语句 where和if标签的使用

Mybatis中动态sql中trim标签的使用

mybatis的where和if标签配合使用

MyBatis学习笔记 —— 动态SQL

162-mybatis为什么要使用where标签呢?