动态Sql语句 —— Mybatis(七)

<if> 标签

/**
* 根据用户信息,查询用户列表
* @param user
* @return
*/
List<User> findByUser(User user);
<select id="findByUser" resultType="user" parameterType="user">
    select * from user where 1=1
    
    <if test="username!=null and username != '' ">
        and username like #{username}
    </if> 

    <if test="address != null">
        and address like #{address}
    </if>
</select>

  <if>标签的test属性中写的是对象的属性名,如果是包装类的对象要使用OGNL表达式的写法。需要注意 where 1=1 的作用。

 

<where> 标签

<!-- 根据用户信息查询 --> 
<select id="findByUser" resultType="user" parameterType="user"> 
    <include refid="defaultSql"></include> 
    <where> 
        <if test="username!=null and username != '' ">
            and username like #{username}
        </if> 

        <if test="address != null">
            and address like #{address}
        </if>
    </where>
</select>

 

<foreach> 标签

/**
* 根据 id 集合查询用户
* @param vo
* @return
*/
List<User> findInIds(QueryVo vo);
<!-- 查询所有用户在 id 的集合之中 -->
<select id="findInIds" resultType="user" parameterType="queryvo">
    <!-- select * from user where id in (1,2,3,4,5); --> 
    <include refid="defaultSql"></include> 
<where>
<if test="ids != null and ids.size() > 0"> <foreach collection="ids" open="id in ( " close=")" item="uid" separator=","> #{uid} </foreach> </if>
</where>

</select>

  Sql语句:select 字段 from user where id in (?)

  <foreach> 标签用于遍历集合,它的属性:

    collection:代表要遍历的集合元素,注意编写时不要写#{}

    open:代表语句的开始部分。

    close:代表语句的结束部分。

    item:代表遍历集合的每个元素,生成的变量名

    sperator:代表分隔符。

 

posted @ 2020-04-01 19:12  观沧听白  阅读(187)  评论(0)    收藏  举报