【Spring】— 动态SQL :<set>元素

元素

在Hibernate中,如果想要更新某一个对象,就需要发送所有的字段给持久化对象,然而实际应用中会存在只需要更新某一个或几个字段。为了让程序只更新需要更新的字段,MyBatis提供了元素来完成这一工作。元素主要用于更新操作,主要作用是在动态包含的SQL语句前输出一个SET关键字,并将SQL语句中最后一个多余的逗号去除。

【示例】以更新操作为例,使用元素对映射文件中更新用户信息的SQL语句进行修改的代码如下所示。

 <!--<set>元素-->
    <update id="updateUser" parameterType="com.ssm.po.User">
        update t_user
        <set>
            <if test="username !=null and username !=''">
                username= #{username}
            </if>
            <if test="jobs !=null and jobs !=''">
                jobs = #{jobs}
            </if>
            <if test="phone !=null and phone !=''">
                phone = #{phone}
            </if>
        </set>
        where id = #{id}
    </update>

在上述配置的SQL语句中,使用了元素相结合的方式来组装update语句。其中元素会动态前置SET关键字,同时消除SQL语句中最后一个多余的逗号元素用于判断相应的字段是否传入值,如果传入的更新字段非空,就将此字段进行动态SQL组装,并更新此字段,否则此字段不执行更新。

注意
在映射文件中使用元素组合进行update语句动态SQL组装时,如果元素内包含的内容都为空,就会出现SQL语法错误。所以在使用元素进行字段信息更新时,要确保传入的更新字段不能都为空。

你可能感兴趣的:(Spring小知识,spring,sql,mybatis)