MyBatis动态sql语句

  • 动态 SQL 之<if>

  • 动态 SQL 之<foreach>


<if>

我们根据实体类的不同取值,使用不同的 SQL语句来进行查询。比如在 id如果不为空时可以根据id查询,如果username 不同空时还要加入用户名作为条件。这种情况在我们的多条件组合查询中经常会碰到。

    <!--    if的使用-->
    <select id="findByCondition" parameterType="com.domain.User" resultType="com.domain.User">
        select * from User
        <where>
            <if test="id!=0">
                and id=${id}
            </if>
            <if test="username!=null">
                and username='${username}'
            </if>
            <if test="password!=null">
                and password='${password}'
            </if>
        </where>
    </select>

<foreach>
循环执行sql的拼接操作,例如:SELECT * FROM USER WHERE id IN (1,2,5)

foreach标签的属性含义如下:

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

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

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

•close:代表结束部分

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

•sperator:代表分隔符

<!--    foreach的使用-->
    <select id="findByids" parameterType="list" resultType="com.domain.User">
        select * from User
        <where>
            <foreach collection="list" open="id in(" close=")" item="id" separator=",">
                ${id}
            </foreach>
        </where>
    </select>
posted @ 2021-02-22 16:59  西红柿里没有番茄  阅读(57)  评论(0编辑  收藏  举报