首页 > 数据库技术 > 详细

动态Sql语句 —— Mybatis(七)

时间:2020-04-01 19:59:51      阅读:77      评论:0      收藏:0      [点我收藏+]

<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:代表分隔符。

 

动态Sql语句 —— Mybatis(七)

原文:https://www.cnblogs.com/guancangtingbai/p/12614911.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!