核心逻辑即为mysql批量插入数据

1 动态sql批量插入单表

mapper层 集合入参 入参字段符合动态sql字段

 void updateBatchRefresh(List<WccsInfoPreviousDayResp> wccsInfoPreviousDayResps );

xml层

<update id="updateBatchRefresh" parameterType="java.util.List"><!--@mbg.generated-->update poc_extend_info<trim prefix="set" suffixOverrides=","><trim prefix="wccs_supply_info_type = case" suffix="end,"><foreach collection="list" index="index" item="item"><if test="item.pocMiddleId != null">when poc_middle_id = #{item.pocMiddleId,jdbcType=VARCHAR} then #{item.ghlx}</if></foreach></trim><trim prefix="wccs_customer_group_code = case" suffix="end,"><foreach collection="list" index="index" item="item"><if test="item.pocMiddleId != null">when poc_middle_id = #{item.pocMiddleId,jdbcType=VARCHAR} then #{item.chainStoresDm}</if></foreach></trim></trim>where poc_middle_id in<foreach close=")" collection="list" item="item" open="(" separator=", ">#{item.pocMiddleId,jdbcType=VARCHAR}</foreach></update>

2 多表关联批量插入

两张表做关联,同时更新了 pei表的字段和 pbi表的两个字段。
日常开发中,一般都是用单表 UPDATE 语句,很少写多表关联的 UPDATE。

<update id="updateTable">UPDATE poc_extend_info peiINNER JOIN poc_base_info pbi ON pei.poc_middle_id = pbi.poc_middle_id<trim prefix="set" suffixOverrides=","><trim prefix="pei.wccs_supply_info_type = case" suffix="end,"><foreach collection="list" index="index" item="item"><if test="item.pocMiddleId != null">when pei.poc_middle_id = #{item.pocMiddleId,jdbcType=VARCHAR} then #{item.ghlx}</if></foreach></trim><trim prefix="pei.wccs_customer_group_code = case" suffix="end,"><foreach collection="list" index="index" item="item"><if test="item.pocMiddleId != null">when pei.poc_middle_id = #{item.pocMiddleId,jdbcType=VARCHAR} then #{item.chainStoresDm}</if></foreach></trim><trim prefix="pbi.social_uniform_credit_code = case" suffix="end,"><foreach collection="list" index="index" item="item"><if test="item.pocMiddleId != null">when pbi.poc_middle_id = #{item.pocMiddleId,jdbcType=VARCHAR} then #{item.socialCreditCode}</if></foreach></trim></trim>where pei.poc_middle_id in<foreach close=")" collection="list" item="item" open="(" separator=", ">#{item.pocMiddleId,jdbcType=VARCHAR}</foreach></update>

1 在 MySQL 中,可以使用“UPDATE table1 t1,table2,...,table n”的方式来多表更新


mysql> UPDATE pbi p, pei pp SET pp.price = p.price * 0.8 WHERE p.productid= pp.productId;
Query OK, 5 rows affected (0.02 sec)

2 inner join


mysql> UPDATE pbi p, pei pp SET pp.price = p.price * 0.8 WHERE p.productid= pp.productId;
Query OK, 5 rows affected (0.02 sec)

3 left join


mysql> UPDATE product p, product_price pp SET pp.price = p.price * 0.8 WHERE p.productid= pp.productId;
Query OK, 5 rows affected (0.02 sec)

4 子查询


mysql> UPDATE pei pp SET price=(SELECT price*0.8 FROM pbi WHERE productid = pp.productid);
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5  Changed: 5  Warnings: 0

动态sql批量插入数据相关推荐

  1. 【MyBatis动态SQL批量修改数据出现报错问题】

    MyBatis动态SQL批量修改数据出现报错问题 MyBatis动态SQL批量修改数据出现报错问题 问题描述 XML文件中的动态SQL 执行结果 测试执行 报错日志 解决 原数据库URL 修改后数据库 ...

  2. sql批量插入数据mysql_MYSQL批量插入数据库实现语句性能分析

    假定我们的表结构如下: CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCH ...

  3. sql 批量插入数据到Sqlserver中 效率较高的方法

    使用SqlBulk #region 方式二 static void InsertTwo() { Console.WriteLine("使用Bulk插入的实现方式"); Stopwa ...

  4. 16、mybatis动态sql 批量插入

    文章目录 1.EmployeeMapper 2.EmployeeMapper.xml(以逗号间隔执行一条语句)(推荐) 3.Test 4.以分号间隔执行每条语句(第二种方式) 5.Oracle下的批量 ...

  5. sql批量插入防止重复插入_使用SQL批量插入锁定配置

    sql批量插入防止重复插入 One challenge we may face when using SQL bulk insert is whether we want to allow acces ...

  6. 【JDBC】PreparedStatement实现批量插入数据

    题目:[JDBC]PreparedStatement实现批量插入数据 前言: PreparedStatement除了解决Statement的拼串.sql注入问题之外,还可以实现以下操作 Prepare ...

  7. SQL Server 批量插入数据方案 SqlBulkCopy 的简单封装,让批量插入更方便

    在线工具 一.Sql Server插入方案介绍 关于 SqlServer 批量插入的方式,有三种比较常用的插入方式,Insert.BatchInsert.SqlBulkCopy,下面我们对比以下三种方 ...

  8. oracle insert汉字出错,Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名...

    本文主要向大家介绍了Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle数据库,用 ...

  9. MyBatis直接执行SQL查询及批量插入数据

    转:http://www.cnblogs.com/mabaishui/archive/2012/06/20/2556500.html 一.直接执行SQL查询: 1.mappers文件节选 <re ...

最新文章

  1. PostgreSQL从继承到分区(三)
  2. [蓝桥杯][基础练习VIP]FJ的字符串-递归
  3. linux集成安装步骤,TeamCity 持续集成在Linux的安装
  4. c语言程序40例,C语言程序讲解40例.pdf
  5. currenthashmap如何实现线程安全_Java的List如何实现线程安全?
  6. mysql swarm_【Docker】 Swarm简单介绍
  7. mysql时间10位数字_mysql—MySQL数据库中10位时间戳转换为标准时间后,如何对标准时间进行加减X天处理...
  8. 如何利用迅雷下载百度云?
  9. [转]win10 vs2010安装教程(超详细,附下载链接)
  10. 关于色域与BT.2020相关学习心得笔记
  11. 网络测速神器:SpeedTest深度指南
  12. 基于Google Earth Engine的Landsat单窗算法地表温度(LST)反演
  13. 爬取网易云音乐50000+首歌曲
  14. 文本识别 OCR 浅析:特征篇
  15. 2022.8.17 mysql 课后作业
  16. 追寻着最初的梦想,我们上路吧
  17. Go语言——测试与性能
  18. 红米notex参数配置
  19. PHP App Store Server API 苹果API退款 查询订单 历史订单 PHP校验签名解码
  20. 产生crashdump的三种方法

热门文章

  1. 如何快速掌握python函数_新手如何快速入门Python编程?
  2. python 拆包装包_python中的装包与拆包
  3. python自动化验证部署_Python selenium自动化测试环境安装部署
  4. 解决WIN7SP1与NOD32环境下载速度缓慢
  5. 1999那个追着打我的女孩
  6. 自主售货机GUI设计C#
  7. 基于Opencv实现的多彩隔空画图
  8. 设置联想键盘恢复F1~F12默认按键的操作办法
  9. 本地镜像运行Docker容器Unable to find image 'hello-world:latest' locally docker: Error response from daemon
  10. C# 根据周数获取当前周的星期一和星期天