admin管理员组文章数量:1564643
在使用Mybatis动态拼装查询参数时,执行过程中如果你的项目报错如下
Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 传入的请求具有过多的参数。该服务器支持最多 2100 个参数。请减少参数的数目,然后重新发送该请求。
uncategorized SQLException for SQL []; SQL state [S0001]; error code [8003]; 传入的请求具有过多的参数。该服务器支持最多 2100 个参数。请减少参数的数目,然后重新发送该请求。; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 传入的请求具有过多的参数。该服务器支持最多 2100 个参数。请减少参数的数目,然后重新发送该请求。
问题很明显,就是拼装参数超过2100个参数,这是jdbc给出的错误,要解决这个问题
1、将传入的参数变为一个关联表或者子查询
例如:
select * from a
left join b on a.id = b.aid
...
2、或者使用in 子查询方式
select * from a
where a.id in (select aid from b)
3、将所有参数拼接在一起,作为一个参数传入
例如使用for循环将id逗号拼接起来,形成 1,2,3,4,5,6
Mybatis中参数使用${},而不用#{}
select * from a
where a.id in (${ids})
版权声明:本文标题:该服务器支持最多2100个参数,Mybatis批量查询拼装参数超长的解决办法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727354871a1110088.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论