MyBatis 批量更新,批量更新
生活随笔
收集整理的這篇文章主要介紹了
MyBatis 批量更新,批量更新
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Mapper的內(nèi)容如下:
package com.xxx.user.mapper;import com.baomidou.mybatisplus.mapper.BaseMapper; import com.xxx.user.entity.TbSysUserPhoneBelong;import java.util.List;/*** <p>* 功能:* </p>** @author tuzq* Copyright 2018 xxx.com, Inc. All rights reserved* @version v1.0* @ClassName: xxxx* @date 2018/3/22*/ public interface TbSysUserPhoneBelongMapper extends BaseMapper<TbSysUserPhoneBelong> {/*** 歸屬地相關(guān)的批處理* @param phoneBelongs :歸屬地list*/public void insertBatch(@Param("phoneBelongs")List<TbSysUserPhoneBelong> phoneBelongs); }xml的內(nèi)容如下:
要注意的是,不要INSERT INTO里面不要加id
批量更新
具體參考:https://blog.csdn.net/xyjawq1/article/details/74129316
Mapper.java文件中的定義如下:
public void updateBatchById(@Param("keywordsList")List<CommunityKeywords> keywordsList);mapper.xml中的內(nèi)容如下
<update id="updateBatch" parameterType="java.util.List">update mydata_table<trim prefix="set" suffixOverrides=","><trim prefix="status =case" suffix="end,"><foreach collection="list" item="item" index="index">when id=#{item.id} then #{item.status}</foreach></trim></trim>where id in<foreach collection="list" index="index" item="item" separator="," open="(" close=")">#{item.id,jdbcType=BIGINT}</foreach></update>方法二:
<update id="updateBatchById" parameterType="java.util.List"><foreach collection="keywordsList" item="item" index="index" separator=";">UPDATEXXX<set><trim suffixOverrides=","><if test="item.articleId != null">article_id = #{item.articleId},</if><if test="item.keywords != null">keywords = #{item.keywords},</if>xxxxxx</trim></set>WHEREid = #{item.id}</foreach></update>這種方法可能會報:
Caused by: java.sql.SQLException: sql injection violation, multi-statement not allow : update device_bd_token SET access_token=? where device_id = ?; update device_bd_token SET access_token=? where device_id = ?at com.alibaba.druid.wall.WallFilter.check(WallFilter.java:714)at com.alibaba.druid.wall.WallFilter.connection_prepareStatement(WallFilter.java:240)at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:448)at com.alibaba.druid.filter.FilterAdapter.connection_prepareStatement(FilterAdapter.java:928)at com.alibaba.druid.filter.FilterEventAdapter.connection_prepareStatement(FilterEventAdapter.java:122)at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:448)at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.prepareStatement(ConnectionProxyImpl.java:342)at com.alibaba.druid.pool.DruidPooledConnection.prepareStatement(DruidPooledConnection.java:318)原因是druid給控制住了,解決辦法是:
<!-- 配置數(shù)據(jù)源 --><bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><property name="url" value="${jdbc_url}"/><property name="username" value="${jdbc_username}"/><property name="password" value="${jdbc_password}"/><!-- 初始化連接大小 --><property name="initialSize" value="${jdbc.initialSize}"/><!-- 連接池最大使用連接數(shù)量 --><property name="maxActive" value="${jdbc.maxActive}"/><!-- 連接池最小空閑 --><property name="minIdle" value="${jdbc.minIdle}"/><!-- 獲取連接最大等待時間 --><property name="maxWait" value="${jdbc.maxWait}"/><property name="validationQuery" value="${validationQuery}"/><property name="testOnBorrow" value="false"/><property name="testOnReturn" value="false"/><property name="testWhileIdle" value="true"/><!-- 配置間隔多久才進(jìn)行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}"/><!-- 配置一個連接在池中最小生存的時間,單位是毫秒 --><property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}"/><!-- 打開removeAbandoned功能 --><property name="removeAbandoned" value="true"/><!-- 1800秒,也就是30分鐘 --><property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}"/><!-- 關(guān)閉abanded連接時輸出錯誤日志 --><property name="logAbandoned" value="true"/><!-- 監(jiān)控數(shù)據(jù)庫 wall sql防火墻,注意這里的wall-filter,默認(rèn)是wall,這里使用我們自己定義的wall-filter --><property name="filters" value="mergeStat,wall-filter"/><!-- 支持emoji表情 --><property name="connectionInitSqls" value="set names utf8mb4;"/></bean><!-- 下面兩個bean是增加的過濾器,為了解決批量更新被攔截了的問題 --><bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter"><property name="config" ref="wall-config" /></bean><bean id="wall-config" class="com.alibaba.druid.wall.WallConfig"><property name="multiStatementAllow" value="true"/></bean>總結(jié)
以上是生活随笔為你收集整理的MyBatis 批量更新,批量更新的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis-4.0.10集群安装(3台机
- 下一篇: 全球购骑士卡怎么消费