admin管理员组

文章数量:1558067

在使用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})

本文标签: 参数最多解决办法批量服务器