sql片段

作者: 幻影翔 | 来源:发表于2018-05-27 20:45 被阅读14次

    定义sql片段

    注意:不要将where标签放在sql片段

    <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>
                <!-- 其他查询条件 -->
      </if>
            <if test="ids!=null">
                <!-- 根据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>
            </if>
    </sql>
    

    调用sql片段

    <!-- 自定义查询条件查询用户的信息
    parameterType:指定包装类型
    %${userCustom.username}%:userCustom是userQueryVo中的属性,通过OGNL获取属性的值
     -->
    <select id="findUserList" parameterType="userQueryVo" resultType="user">
        select id,username,birthday from user
        <!-- where标签相当 于where关键字,可以自动去除第一个and -->
        <where>
        <!-- 引用sql片段,如果sql片段和引用处不在同一个mapper必须前边加namespace -->
            <include refid="query_user_where"></include>
            <!-- 下边还有很其它的条件 -->
            <!-- <include refid="其它的sql片段"></include> -->
        </where>
    </select>

    相关文章

      网友评论

        本文标题:sql片段

        本文链接:https://www.haomeiwen.com/subject/vejijftx.html