mybatis mysql 批量_mysql使用mybatis批量更新问题

2023-11-04

一、好言

在光芒万丈之前,我们都要欣然接受眼下的难堪和不易,接受一个人的孤独和偶尔的无助。

二、背景

其实这是在处理一个问题的时候,需要批量更新数据,结果这个批量更新数据是有问题的,所以改了顺便记载下。

问题

SQL: update t_user set user_name = ?, age = ?, login_token = ? where login_token = ? ; update t_user set

user_name = ?, age = ?, login_token = ? where login_token = ? ; update t_user set user_name = ?, age =

?, login_token = ? where login_token = ?

Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL

syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

'updatet_user set user_name = 'hahahha' at line 1

; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for

the right syntax to use near 'update t_user set device_id = hahahha' at line 1

at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLE

xceptionTranslator.java:231)

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLE

xceptionTranslator.java:73)

at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.ja

va:74)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:421)

at com.sun.proxy.$Proxy40.update(Unknown Source)

at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:270)

at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:55)

at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53)

at com.sun.proxy.$Proxy45.bathUpdateUserInfos(Unknown Source)

at com.mouse.moon.user.service.UserService.bathUpdateUserInfos(UserService.java:74)

at at com.mouse.moon.user.service.UserService$$FastClassBySpringCGLIB$$6d6c351

c.invoke()

at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy

.java:720)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)

at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInt

erceptor.java:99)

at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(Transactio

nAspectSupport.java:281)

at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:

179)

at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.ja

va:655)

at at com.mouse.moon.user.service.UserService$$EnhancerBySpringCGLIB$$e3e29c1

c.bathUpdateUserInfos()

at test.userServicetest.testUpdaterUserInfo(UserServiceTest.java:71)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTes

tMethodCallbacks.java:75)

at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMe

thodCallbacks.java:86)

at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)

at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)

at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:2

54)

at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:8

9)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestC

lassCallbacks.java:61)

at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClas

sCallbacks.java:70)

at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:193)

at org.junit.runner.JUnitCore.run(JUnitCore.java:137)

at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)

at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)

at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:253)

at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL

syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

'update t_user set user_name = 'hahahha' at line 1

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)

at com.mysql.jdbc.Util.getInstance(Util.java:387)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)

at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1192)

at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)

at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)

at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:4

5)

at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:73)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63)

at com.sun.proxy.$Proxy73.update(Unknown Source)

at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49)

at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:115)

at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75)

at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:170)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:408)

... 50 more

解决

jdbc:mysql://localhost:3306/users?characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true

四:批量处理代码

如果传入两个参数,mapper层如下:

int batchInsertData(@Param("versionList") List userList, @Param("id")Long id);

insert into t_User (id, version,

ostype, createTime,

updateTime)

values

( #{id,jdbcType=BIGINT}, #{item.version,jdbcType=VARCHAR},

#{item.ostype,jdbcType=VARCHAR}, 0, now(),now())

五、set的批量处理

List selectUserInfoByIdSet(@Param("set") Set userIdSet,@Param("sex")String sex);

select * from t_user

where sex= #{sex} and user_id IN

#{item}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mybatis mysql 批量_mysql使用mybatis批量更新问题 的相关文章

  • 江西理工大学计算机网络基础试卷,无线网络技术作业(江西理工大学期末复习)...

    无线网络技术 1 1 跳频扩频和直接序列扩频各有什么特点 我的答案 跳频扩频 1 一定扩频码序列进行选择的多频率频移键控调制 载波频率不断跳变 2 发送方看似随机的无线电频率序列广播消息 并以固定间隔从一频率跳到另一频率 3 接收方接收时也
  • java对象和类的定义 属性 方法

    类 class 对象 Object instance 实例 1 类可以看成一类对象的模板 对象可以看成该类的一个具体实例 2 类是用于描述同一类型的对象的一个抽象概念 类中定义了这一类对象所应具有的共同属性 方法 类的定义方式 每一个源文件
  • JSP数据交互(一)---内置对象》response

    JSP内置对象之response response对象用于响应客户请求并向客户端输出信息 设置响应参数等 页面重定向 void sendRedirect String location 客户端将重新发送请求到指定的URL 实现登陆验证 并验
  • vector、list、queue

    引用 windows程序员面试指南 vector vector 类似于C语言中的数组 vector 支持随机访问 访问某个元素的时间复杂度 O 1 vector 插入和删除元素效率较低 时间复杂度O n vector 是连续存储 没有内存碎
  • 重构——写在后面

    重构方法有很多 但是只要满足以下条件 怎么重构都是合理的 原则一 SRP Single responsibility principle 单一职责原则又称单一功能原则 核心 解耦和增强内聚性 高内聚 低耦合 描述 类被修改的几率很大 因此应
  • MyBatis实现Mysql数据库分库分表操作和总结(推荐)

    阅读目录 前言 MyBatis实现分表最简单步骤 分离的方式 分离的策略 分离的问题 分离的原则 实现分离的方式 总结 前言 作为一个数据库 作为数据库中的一张表 随着用户的增多随着时间的推移 总有一天 数据量会大到一个难以处理的地步 这时
  • 对于git功能的探索与研究

    读前提示 注意 本文只是面向初学者或者之前并未接触过git而想学习如何初步使用git的读者 如果您很擅长使用git 并善于维护远程仓库 那么不建议您看此篇文章 这会浪费您的时间 当然 这篇文章还是能很好地告诉初学者如何简单的运用git的 比
  • 【C++】类的隐式转换和explicit抑制类的隐式转换

    2023年8月5日 周六下午 今天在网上找了很久都没找到有精确定义了类的隐式转换条件的资料 最后是在权威书籍 C Primer 第5版 里面找到的 说真的 虽然我认为 C Primer 第5版 不适合作为新手学习C 的教材 因为内容太多了
  • [[概率论与数理统计-2]:随机函数、概率、概率函数、概率分布函数

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 123608954 目录 第1章 随机与
  • ZonedDateTime 转为字符串

    Java8新特性ZonedDateTime 这个类有很多好用的方法 但是也有很多坑 它转为字符串时间不对 一般会少几个小时 这个因为地区时间不对 我们只需要转为字符串的时间添加几小时就好 代码如下 public static String
  • c++ vector内存释放踩坑,内存泄漏

    目录 vector删除元素 智能指针 vector移动元素位置 vector条件删除
  • 编译原理之first集,follow集,select集解析

    为了方便自顶向下语法分析 需要求文法对应的first集 follow集 以及select集 本文主要分为两部分 一个是求法解析 还有一个例子详解 第一部分是求法解析 将对first集 follow集 select集分为三种讲解方法 定义介绍
  • pyspark对字段加前缀,拼接字符串

    代码逻辑 在df中 当字段main task id为 0 时 则对字段sub task id加前缀 check 否则取其本身的值 正确代码如下 df2 df withColumn sub task id when col main task
  • SQL窗口函数的使用

    定义 窗口函数 又叫OLAP Online Anallytical Processing 函数 可对数据库数据进行实时分析处理 功能 同时分组和排序 不减少原表的行数 区别于聚合函数 每行数据都生成一个结果 使用场景 排名问题 topN问题
  • USE_STDPERIPH_DRIVER, STM32F10X_HD说明

    如果在STM32工程编译时没有添加USE STDPERIPH DRIVER STM32F10X HD时会出现如下错误 library cortex m3 stm32f10x h 96 error 35 error directive Ple
  • SLAM实战项目(1) — ORB-SLAM2稠密地图重建

    目录 1 整体思路 2 功能实现 3 结果运行 1 TUM数据集下载 2 associate py用于RGB和Depth匹配 3 运行数据集 4 CMakeLists txt文件修改 5 完整PointCloudMapping h和Poin
  • 关于GPT-3和GPT-4,你需要知道都在这里

    友情提示 提示 本文约3500个文字 字数较长 可直接点击序号进入相关目录阅读字数 文章目录 友情提示 前言 一 什么是 GPT 3 GPT 4 和 ChatGPT 二 对未来的担忧 三 什么时候可以用GPT4 四 GPT 4用在什么地方
  • 漏洞扫描工具Goby的安装和使用(新一代网络安全技术)

    简介 Goby使用新一代网络安全技术 通过为目标建立完整的资产数据库 实现快速的安全应急 Goby有哪些优势呢 最丰富的设备规则集 Goby预置了超过10万种规则识别引擎 能针对硬件设备和软件业务系统进行自动化识别和分类 全面的分析出网络中
  • 大一上学期c语言PTA错题总结(自用)(02)

    1 下列程序段的输出结果是 C int main void int a 2 b 1 c 2 if a lt b if b lt 0 c 0 else c printf d n c return 0 A 0 B 1 C 2 D 3 else与

随机推荐

  • 运行维护巡检流程及内容

    运维人员着工装 佩戴工作牌按照程序进入企业 并与企业环保专员联系共同进入基 站 运维人员观察基站站房外部卫生 管路 电气电路是否异常 运维人员进入站房 检查数据采集传输是否正常 各监测设备运行是否正常 历史数 据完整性 检查采样系统是否正常
  • 使用element -ui 遇到的坑

    1 使用el dialog 遮罩层把显示内容遮住了 原因 Dialog 的外层布局的 position 值为 fixed absolute relative 三者之一时 就会出现被蒙板遮住的情况 解决方法 参考链接 https blog c
  • SpringCloudAlibaba实战入门之Dubbo(基于Nacos注册中心)(七)

    一 Dubbo介绍 Dubbo是阿里巴巴公司开源的一个高性能 轻量级的 Java RPC 框架 致力于提供高性能和透明化的 RPC 远程服务调用方案 以及 SOA 服务治理方案 官网 http dubbo apache org 服务提供者在
  • C++11数组了解

    原文链接 C 11数组 array 的使用 码到城攻使用 std array 能够让代码变得更加 现代化 而且封装了一些操作函 数 比如获取数组大小以及检查是否非空https www codecomeon com posts 221 数组介
  • Hadoop NameNode和DataNode只能启动一个问题

    DataNode和NameNode进程不能共存 启动NameNode可以正常启动 但是启动DataNode时发现 NameNode进程不存在了 导致两个无法共存 问题原因 NameNode在format初始化后会生成claserId 集群i
  • Java Web项目部署到Linux后的中文乱码问题

    问题描述 项目通过Maven打成war包传输到Linux上 SQL导出数据和结构后在Linux上的Mysql执行 数据都能正常显示 项目也是正常的访问到了index html 一切显得毫无问题 开始测试项目各个功能是否有异常 当我检查到我的
  • python练习.求s=a+aa+aaa+aaaa+aa...a的值

    题目 求s a aa aaa aaaa aa a的值 其中a是一个数字 例如2 22 222 2222 22222 此时共有5个数相加 几个数相加由键盘控制 from functools import reduce n 0 s n int
  • SegFormer 代码详解+数据流分析

    目录 代码详解 数据流分析 数据流及尺寸变化 输入为512x512x3的图片 使用b0主干网络 Encoder mit backbone Transformer Block 解码头 Head 代码详解 import torch 导入PyTo
  • java内存模型的角度分析volatile关键字

    多任务处理 多任务处理的背景 计算机的运算能力增强 计算机的运算速度与它的存储和通信子系统的速度差距太大 大量的时间都花费在磁盘I O 网络通信或者数据库访问中上 我们不希望处理器在大部分时间里都处于等待其他资源的空闲状态 计算机多任务处理
  • Thymeleaf的常用表达式及简单使用实例

    什么是Thymelaf 它是非常可拓展的 允许自定义名字来定义一组模板属性 或者甚至是标签 它还带有一些称为标准方言的东西 它们定义了一组功能 这些功能满足大多数情况 标准表达式五种类型 变量表达式 选择表达式 消息表达式 i18n 链接表
  • 不使用PCL库,C++保存PLY文件

    输入文件名和TriangulatePoints的结果 void savePLY const std string ply3D filename cv Mat pnts time t t time 0 char tmp1 64 strftim
  • 三因素方差分析_多因变量方差分析和方差成分分析

    点击蓝字关注我们 什么是多因变量方差分析 1 SPSS的一般线性模型中的多变量过程提供多因变量的方差分析 多因变量方差分析模型的因变量是尺度变量 连续变量 分类变量作为固定因素变量 协变量必须是尺度变量 该模型是基于尺度因变量与作为预测因子
  • gre报文长度解析

    pTemp为GRE报文头指针 unsigned char getGreHdrLen unsigned char pTemp unsigned char greflags1 pTemp unsigned char greflags2 pTem
  • poj 3280 Cheapest Palindrome(区间DP)[增删改变简单回文串]

    题目大意 给出一个由n个小写字母组成的 长度为m的字符串字符串来 对这个字符串进行删除字母或者添加字母 使得该字符串是一个回文串 每一步删除和添加每个字母都有对应的代价 求将该字符串转成回文串的最小代价 对于一个串来说在一端删除一个字母和再
  • dy之__ac_signature

    文章目录 目标网站 参数定位 补环境代码 python 测试 往期逆向文章推荐 JS逆向之今日头条signature JS逆向之淘宝sign JS逆向之知乎jsvmp算法 JS逆向之艺恩数据 JS逆向之网易云音乐 JS逆向之巨量星图sign
  • 如何去实践一个完整的数据挖掘项目?

    每日一问 如何去实践一个完整的数据挖掘项目 机器学习项目 1 抽象成数学问题 明确问题 2 获取数据 3 特征预处理与特征选择 4 训练模型与调优 5 模型诊断 6 模型融合 非必须 7 上线运行 大部分机器学习项目死在第1步和第2步 平时
  • Python删除缺失值所在行

    转载 https blog csdn net qq 35843543 article details 106471278 关键内容 data dropna how all 传入这个参数后将只丢弃全为缺失值的那些行 data dropna a
  • python+webdriver解决:web页面大小调整和滚动

    因为页面显示不全导致页面的元素定位失败 可以缩小 滚动web页面把想要定位的元素显示出来 原地址连接 https www cnblogs com wdana p 12037567 html
  • 【目标检测】18、RetinaNet:Focal Loss for Dense Object Detection

    文章目录 一 背景 二 方法 2 1 Focal loss 2 2 RetinaNet 网络结构 三 效果 论文 Focal Loss for Dense Object Detection 代码 https github com faceb
  • mybatis mysql 批量_mysql使用mybatis批量更新问题

    一 好言 在光芒万丈之前 我们都要欣然接受眼下的难堪和不易 接受一个人的孤独和偶尔的无助 二 背景 其实这是在处理一个问题的时候 需要批量更新数据 结果这个批量更新数据是有问题的 所以改了顺便记载下 问题 SQL update t user