该服务器支持最多2100个参数,Mybatis批量查询拼装参数超长的解决办法

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Node.js中,可以使用参数来进行查询。具体而言,可以通过以下几种方式来实现带参数查询: 1. 使用URL参数:可以在URL中添加参数,然后在服务器端通过解析URL来获取这些参数。例如,可以通过`req.query`对象来获取URL中的参数。示例代码如下: ```javascript // 安装并引入express模块 const express = require('express'); const app = express(); // GET请求的路由处理函数 app.get('/search', (req, res) => { const keyword = req.query.keyword; // 获取名为"keyword"的参数值 // 根据参数值进行查询操作 // ... res.send('查询结果'); }); // 启动服务器 app.listen(3000, () => { console.log('服务器已启动'); }); ``` 2. 使用路由参数:可以在路由路径中定义参数,并在处理函数中获取这些参数。示例代码如下: ```javascript // 安装并引入express模块 const express = require('express'); const app = express(); // GET请求的路由处理函数 app.get('/search/:keyword', (req, res) => { const keyword = req.params.keyword; // 获取名为"keyword"的参数值 // 根据参数值进行查询操作 // ... res.send('查询结果'); }); // 启动服务器 app.listen(3000, () => { console.log('服务器已启动'); }); ``` 3. 使用请求参数:对于POST请求或其他需要发送请求体的请求,可以在请求体中添加参数,并在服务器端进行解析。示例代码如下: ```javascript // 安装并引入express模块 const express = require('express'); const app = express(); // POST请求的路由处理函数 app.post('/search', (req, res) => { const keyword = req.body.keyword; // 获取名为"keyword"的参数值 // 根据参数值进行查询操作 // ... res.send('查询结果'); }); // 启动服务器 app.listen(3000, () => { console.log('服务器已启动'); }); ``` 以上是使用Node.js进行带参数查询的几种常见方式。根据具体的需求和场景,选择适合的方式来实现带参数查询即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值