Mybatis映射器之update和delete元素解析

Mybatis映射器之update和delete元素解析

之前对select和insert元素进行了比较细致的解析,而update和delete两个元素相对来说比较简单,我们就放在一起来进行分析下。与insert元素一样,这两个元素在sql执行完后也会返回一个整数,表示执行影响的条数。

1. update

1.1 简单示例

简单的update示例:

    <update id="update" parameterType="com.yhl.mybatis.model.Role">
        update t_role 
        set role_name = #{roleName},note= #{note}
        where id = #{id,jdbcType=BIGINT}
    </update>

update的属性配置如下:

属性 描述 取值 默认
id 在这个模式下唯一的标识符,可被其它语句引用
parameterType 传给此语句的参数的完整类名或别名
flushCache 如果设为true,则会在每次语句调用的时候就会清空缓存。select 语句默认设为false true/false false
useCache 如果设为true,则语句的结果集将被缓存。select 语句默认设为false true/false false
timeout 设置驱动器在抛出异常前等待回应的最长时间,默认为不设值,由驱动器自己决定 正整数 未设置
fetchSize 设置一个值后,驱动器会在结果集数目达到此数值后,激发返回,默认为不设值,由驱动器自己决定 正整数 驱动器决定
statementType statement、preparedstatement、callablestatement。预准备语句、可调用语句 STATEMENT、PREPARED、CALLABLE PREPARED

1.2 使用场景

批量更新情况
如下sql;

    <update id="updateBatch"  parameterType="java.util.List">
        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
            update t_role
            <set>
                role_name=${item.roleName}
            </set>
            <set>
                note = ${item.note}
            </set>
            where id = ${item.id}
        </foreach>
    </update>

更新多条记录的同一个字段

    <update id="updateRoles" parameterType="java.util.List">
        update t_role set note = 'batch' where id in
        <foreach collection="list" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </update>

2. delete元素

简单的示例:

    <delete id="deleteRole" parameterType="java.lang.Long">  
        DELETE FROM t_role WHERE id = #{id}  
    </delete>

猜你喜欢

转载自blog.csdn.net/uftjtt/article/details/80263521