zoukankan      html  css  js  c++  java
  • mybatis 的批量更新操作sql

    转:

    mybatis 的批量更新操作sql

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dmcpxy/article/details/81163735

    mybatis的批量更新操作

    我们知道mybatis的插入和删除是可以支持批量操作的,但是update也是支持的,代码如下:

    <update id="updateBatch" parameterType="list" keyProperty="id" useGeneratedKeys="true">
      <foreach collection="list" index="index" item="item" open="" separator=";" close="">
        update t_acl
        <set>
          acl_desc = #{item.aclDesc,jdbcType=VARCHAR},
          update_time = #{item.updateTime,jdbcType=TIMESTAMP}
        </set>
        WHERE device_id = #{item.deviceId,jdbcType=VARCHAR} and acl_number = #{item.aclNumber,jdbcType=VARCHAR}
      </foreach>
    </update>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    批量插入:

    <insert id="insertBatch" parameterType="list" keyProperty="id" useGeneratedKeys="true">
      insert into t_acl (device_id, acl_number, acl_desc, create_time, update_time)
        values
        <foreach collection="list" separator="," item="item" index="index">
          (#{item.deviceId,jdbcType=VARCHAR}, #{item.aclNumber,jdbcType=VARCHAR},
          #{item.aclDesc,jdbcType=VARCHAR}, #{item.createTime,jdbcType=TIMESTAMP}, #{item.updateTime,jdbcType=TIMESTAMP})
        </foreach>
    </insert>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    批量删除:

    <delete id="deleteBatch">
      delete from t_acl where id in
      <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
        #{item.id}
      </foreach>
    </delete>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意批量更新的时候,如果使用了druid数据源,则配置的时候要注意:
    不能配置wall拦截器,否则批量更新不成功。

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="jdbc:mysql://10.3.3.133:6789/test?allowMultiQueries=true&amp;useUnicode=true&amp;characterEncoding=utf-8"/>
        <property name="username" value="test"/>
        <property name="password" value="test"/>
        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="1"/>
        <property name="minIdle" value="1"/>
        <property name="maxActive" value="20"/>
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="60000"/>
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000"/>
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="300000"/>
        <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
        <property name="poolPreparedStatements" value="true"/>
        <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
        <!-- 配置监控统计拦截的filters -->
       <!-- <property name="filters" value="stat,log4j,wall"/> 这种配置不支持批量更新语句-->
        <property name="filters" value="stat,log4j"/>
    </bean
  • 相关阅读:
    (转载)SAPI 包含sphelper.h编译错误解决方案
    C++11标准的智能指针、野指针、内存泄露的理解(日后还会补充,先浅谈自己的理解)
    504. Base 7(LeetCode)
    242. Valid Anagram(LeetCode)
    169. Majority Element(LeetCode)
    100. Same Tree(LeetCode)
    171. Excel Sheet Column Number(LeetCode)
    168. Excel Sheet Column Title(LeetCode)
    122.Best Time to Buy and Sell Stock II(LeetCode)
    404. Sum of Left Leaves(LeetCode)
  • 原文地址:https://www.cnblogs.com/libin6505/p/10757334.html
Copyright © 2011-2022 走看看