Mybatis批量更新运行异常,数据库 postgres(Sql在数据库中运行正常)在线等

CixHn CixHn 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
Mapper配置:
<update id="cancelImport" parameterType="java.util.List">
update fm_attach_detail attach
<set>
remark = fromData.remark,
valid = fromData.valid,
modify_user = fromData.modifyUser::INTEGER
</set>
from (values
<foreach collection="list" item="item" index="index" open="" close="" separator=",">
<trim prefix="(" suffix=")">
#{item.id}, #{item.refId},#{item.remark},#{item.modifyUser},#{item.valid}
</trim>
</foreach>
) as fromData(id, refId, remark, modifyUser, valid)
<where>
attach.valid = '0' AND fromData.id::INTEGER = attach.id AND attach.ref_id= fromData.refId
</where>
</update>
部分异常信息:
org.springframework.jdbc.UncategorizedSQLException:
### Error updating database. Cause: java.sql.SQLException: sql injection violation, syntax error: error pos 235, line 3, column 98, token COMMA : update fm_attach_detail attach
SET remark = fromData.remark, valid = fromData.valid, modify_user = fromData.modifyUser::INTEGER
from (values ( ?, ?,?,?,? ) , ( ?, ?,?,?,? ) , ( ?, ?,?,?,? ) ) as fromData(id, refId, remark, modifyUser, valid)
WHERE attach.valid = '0' AND fromData.id::INTEGER = attach.id AND attach.ref_id= fromData.refId
### SQL: update fm_attach_detail attach SET remark = fromData.remark, valid = fromData.valid, modify_user = fromData.modifyUser::INTEGER from (values ( ?, ?,?,?,? ) , ( ?, ?,?,?,? ) , ( ?, ?,?,?,? ) ) as fromData(id, refId, remark, modifyUser, valid) WHERE attach.valid = '0' AND fromData.id::INTEGER = attach.id AND attach.ref_id= fromData.refId
### Cause: java.sql.SQLException: sql injection violation, syntax error: error pos 235, line 3, column 98, token COMMA : update fm_attach_detail attach
SET remark = fromData.remark, valid = fromData.valid, modify_user = fromData.modifyUser::INTEGER
from (values ( ?, ?,?,?,? ) , ( ?, ?,?,?,? ) , ( ?, ?,?,?,? ) ) as fromData(id, refId, remark, modifyUser, valid)
WHERE attach.valid = '0' AND fromData.id::INTEGER = attach.id AND attach.ref_id= fromData.refId
; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; sql injection violation, syntax error: error pos 235, line 3, column 98, token COMMA : update fm_attach_detail attach
SET remark = fromData.remark, valid = fromData.valid, modify_user = fromData.modifyUser::INTEGER
from (values ( ?, ?,?,?,? ) , ( ?, ?,?,?,? ) , ( ?, ?,?,?,? ) ) as fromData(id, refId, remark, modifyUser, valid)
WHERE attach.valid = '0' AND fromData.id::INTEGER = attach.id AND attach.ref_id= fromData.refId; nested exception is java.sql.SQLException: sql injection violation, syntax error: error pos 235, line 3, column 98, token COMMA : update fm_attach_detail attach
SET remark = fromData.remark, valid = fromData.valid, modify_user = fromData.modifyUser::INTEGER
from (values ( ?, ?,?,?,? ) , ( ?, ?,?,?,? ) , ( ?, ?,?,?,? ) ) as fromData(id, refId, remark, modifyUser, valid)
WHERE attach.valid = '0' AND fromData.id::INTEGER = attach.id AND attach.ref_id= fromData.refId
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:90)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy99.update(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:294)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy111.cancelImport(Unknown Source)
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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy112.cancelImport(Unknown Source)
at com.tuns.ins.business.fm.impl.AttachDetailServiceImpl.batchUpdateData(AttachDetailServiceImpl.java:103)
at com.tuns.ins.business.fm.impl.AttachDetailServiceImpl$$FastClassBySpringCGLIB$$f4ee1105.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
at com.tuns.ins.business.fm.impl.AttachDetailServiceImpl$$EnhancerBySpringCGLIB$$ec0bee9c.batchUpdateData(<generated>)
at com.tuns.ins.webgate.fm.ReceiveWebgate.cancelKnotBackImport(ReceiveWebgate.java:125)
at com.tuns.ins.webgate.fm.ReceiveWebgate$$FastClassBySpringCGLIB$$29183179.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
at com.tuns.ins.webgate.fm.ReceiveWebgate$$EnhancerBySpringCGLIB$$4a7f085e.cancelKnotBackImport(<generated>)
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.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.
...全文

相关推荐

mybatis postgresql 批量删除操作方法

PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),这篇文章主要介绍了mybatis postgresql 批量删除操作,需要的朋友可以参考下

weixin_38526751

PostgreSQL时间盲注漏洞挖掘:从MyBatis误用到供应链系统安全实战

SQL注入作为Web安全领域的经典漏洞,其核心原理在于攻击者通过构造恶意输入,篡改应用程序后端的SQL查询逻辑,从而绕过认证、窃取数据或破坏数据库。在Java生态中,MyBatis框架的`${}`与`#{}`参数处理机制差异是常见风险点,前者直接进行字符串替换,若用户输入未经充分校验即被拼接至SQL语句,便会引入注入风险。这种漏洞的技术价值在于其危害的隐蔽性与严重性,尤其时间盲注(Time-Based Blind SQL Injection)变种,不依赖错误回显,仅通过响应时间差异即可逐步推断数据库信息,对

weixin_33937778

斯坦福大学数据库导论全解析:从SQL到NoSQL系统学习

数据库是现代应用架构的核心基础设施,无论是关系型数据库还是NoSQL,都围绕数据建模、查询优化与一致性保障展开。关系模型奠定了SQL的基础,事务机制则通过ACID与隔离级别确保并发场景下的数据可靠性,而分布式事务与SQL注入防护则是工程实践中的高频难题。随着业务规模增长,Redis、MongoDB等NoSQL方案与关系数据库形成互补,共同支撑高并发与灵活扩展。本文以斯坦福大学「Introduction to Databases」课程为主线,系统拆解SQL、XML、关系设计、事务、NoSQL五大模块,并结合M

p是马甲

spring boot + mybatis如何实现数据库的读写分离

主要给大家介绍了关于spring boot + mybatis如何实现数据库的读写分离的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

weixin_38640072

PostgreSQL实现批量插入、更新与合并操作的方法

前言 就在 2019 年 1 月份微软收购了 PostgreSQL 数据库的初创公司 CitusData, 在云数据库方面可以增强与 AWS 的竟争。AWS 的 RDS 两大开源数据库就是 MySQL(Aurora 和 MariaDB 是它的变种) 和 PostgreSQL。 而 PostgreSQL 跳出了普通关系型数据库的类型约束,它灵活的支持 JSON, JSONB, XML, 数组等类型。比如说字段类型可以是各种形式的数组,一维或多维。 create table t1( address varchar(5)[3], counter integer[3][3], schedule

weixin_38603875
评论 3
收藏 已收藏
分享
返回顶部
CixHn
Java SE 62,621 成员 307,251 内容