动态sql批量插入数据
核心逻辑即为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批量插入数据相关推荐
- 【MyBatis动态SQL批量修改数据出现报错问题】
MyBatis动态SQL批量修改数据出现报错问题 MyBatis动态SQL批量修改数据出现报错问题 问题描述 XML文件中的动态SQL 执行结果 测试执行 报错日志 解决 原数据库URL 修改后数据库 ...
- sql批量插入数据mysql_MYSQL批量插入数据库实现语句性能分析
假定我们的表结构如下: CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCH ...
- sql 批量插入数据到Sqlserver中 效率较高的方法
使用SqlBulk #region 方式二 static void InsertTwo() { Console.WriteLine("使用Bulk插入的实现方式"); Stopwa ...
- 16、mybatis动态sql 批量插入
文章目录 1.EmployeeMapper 2.EmployeeMapper.xml(以逗号间隔执行一条语句)(推荐) 3.Test 4.以分号间隔执行每条语句(第二种方式) 5.Oracle下的批量 ...
- sql批量插入防止重复插入_使用SQL批量插入锁定配置
sql批量插入防止重复插入 One challenge we may face when using SQL bulk insert is whether we want to allow acces ...
- 【JDBC】PreparedStatement实现批量插入数据
题目:[JDBC]PreparedStatement实现批量插入数据 前言: PreparedStatement除了解决Statement的拼串.sql注入问题之外,还可以实现以下操作 Prepare ...
- SQL Server 批量插入数据方案 SqlBulkCopy 的简单封装,让批量插入更方便
在线工具 一.Sql Server插入方案介绍 关于 SqlServer 批量插入的方式,有三种比较常用的插入方式,Insert.BatchInsert.SqlBulkCopy,下面我们对比以下三种方 ...
- oracle insert汉字出错,Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名...
本文主要向大家介绍了Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle数据库,用 ...
- MyBatis直接执行SQL查询及批量插入数据
转:http://www.cnblogs.com/mabaishui/archive/2012/06/20/2556500.html 一.直接执行SQL查询: 1.mappers文件节选 <re ...
最新文章
- PostgreSQL从继承到分区(三)
- [蓝桥杯][基础练习VIP]FJ的字符串-递归
- linux集成安装步骤,TeamCity 持续集成在Linux的安装
- c语言程序40例,C语言程序讲解40例.pdf
- currenthashmap如何实现线程安全_Java的List如何实现线程安全?
- mysql swarm_【Docker】 Swarm简单介绍
- mysql时间10位数字_mysql—MySQL数据库中10位时间戳转换为标准时间后,如何对标准时间进行加减X天处理...
- 如何利用迅雷下载百度云?
- [转]win10 vs2010安装教程(超详细,附下载链接)
- 关于色域与BT.2020相关学习心得笔记
- 网络测速神器:SpeedTest深度指南
- 基于Google Earth Engine的Landsat单窗算法地表温度(LST)反演
- 爬取网易云音乐50000+首歌曲
- 文本识别 OCR 浅析:特征篇
- 2022.8.17 mysql 课后作业
- 追寻着最初的梦想,我们上路吧
- Go语言——测试与性能
- 红米notex参数配置
- PHP App Store Server API 苹果API退款 查询订单 历史订单 PHP校验签名解码
- 产生crashdump的三种方法
热门文章
- 如何快速掌握python函数_新手如何快速入门Python编程?
- python 拆包装包_python中的装包与拆包
- python自动化验证部署_Python selenium自动化测试环境安装部署
- 解决WIN7SP1与NOD32环境下载速度缓慢
- 1999那个追着打我的女孩
- 自主售货机GUI设计C#
- 基于Opencv实现的多彩隔空画图
- 设置联想键盘恢复F1~F12默认按键的操作办法
- 本地镜像运行Docker容器Unable to find image 'hello-world:latest' locally docker: Error response from daemon
- C# 根据周数获取当前周的星期一和星期天