SSM(set、foreach、sql代码片段)

set标签:

set标签会自动去除最后一个满足条件的逗号,set和update进行联用。

    <update id="updateIf" parameterType="user">
        update user
        <set> /*会自动加上set关键字 set也是可以自动加上 逗号 并且去掉 最后一个 逗号 */
            <if test="username != null">
                username = #{username},
            </if>
        </set>
        <where>
            <if test="id != null">
                and id = #{id}
            </if>
        </where>
    </update>

foreach标签:

select * from user where id in (1, 2, 3)

foreach解决的是id in (1, 2, 3), 这样的拼接关系。

open: 表示开始 一般是 (

close: 表示结束 一般是 )

collection: 参数是集合的时候写的是 list

item: 给当前遍历的元素起个别名

separator:每个元素用生命隔开 一般是逗号 ,

参数是集合:

select标签里面的parameterType写的是 list

collection里面写的是list

先去判断list是否为空然后再去进行拼接,这就要和咱们之前的<if>标签进行联用了。

    <select id="findByList" parameterType="list" resultType="user">
        select * from user
        <where>
            <if test="list != null">
                id in
                <foreach item="id" separator="," collection="list" close=")" open="(">
                    #{id}
                </foreach>
            </if>
        </where>
    </select>

参数是数组:

collection里面写的是array

先去判断数组是否为空,这也是和咱们之前的<if>标签联用了。为空的话,也就是查询全部了。

    <select id="findByArray" parameterType="int" resultType="user">
        select * from user
        <where>
            <if test="array != null">
                id in
                <foreach item="id" separator="," collection="array" close=")" open="(">
                    #{id}
                </foreach>
            </if>
        </where>
    </select>

sql片段:

发现查询的时候出现大量的 select * from user 但是当我这个user表名发生变化的时候,岂不是要修改很多的代码。代码片段 也就是把相同的代码提取出现

<sql>标签,里面的id是唯一标识符,方便之后的调用。

    <!--sql语句片段 抽取-->
    <sql id="selectUser">
        select * from user
    </sql>

用的时候:

include标签,然后refid里面填的是sql片段的id

        /*引用sql片段*/
        <include refid="selectUser"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FindYou.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值