开发者社区> 问答> 正文

编译java项目报错:Too many parameters: expected?400报错

以下是我的sql代码:

public List<Map<String, Integer>> getLxsl(BigDecimal userId) throws SQLException {
        QueryRunner qr = new QueryRunner(JdbcUtil.getDataSource(true));
        @SuppressWarnings("unchecked")
        List<Map<String,Integer>> listmap = (List<Map<String, Integer>>) qr.query(
               
"SELECT type,count(*) count FROM lbNotification where ID in (select NotificationID  from lbnotificationuser where isread=0 and userid=0) group BY type desc",
                new MapListHandler(), new Object[] {userId});
        return listmap;    
    }

谁帮我看看问题出在哪了???

以下是报错:

Too many parameters: expected 0, was given 1 Query: SELECT type,count(*) count FROM lbNotification where ID in (select NotificationID  from lbnotificationuser where isread=0 and userid=0) group BY type desc Parameters: [-1]

展开
收起
爱吃鱼的程序员 2020-06-06 15:50:48 1219 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>直接翻译啊,太多的参数了,期望0个,实际1个,也就是你这个sql语句不需要传参,但是你传了一个参数</p>
    
                    
    
                            看了下你的sql,你是要把userId的值传给sql里面的userid吗?如果是的话你在sql里面写userid=0应该是写错了
                        
    
                        <p>new Object[] {userId}  不要了</p>
    
                    
    
                        <p>给的参数值 多余需要的参数个数</p>
    
                    
    
                        <p>需要2个参数 你给了3个参数 这个意思</p>
    
                    
    
                        <p>大概率是 ID in 的问题。你这个子查询返回的结果集超标了,超过了IN的最大处理极限。请改成JOIN。</p>
    
                    
    
                        <p>没有占位符,不要给参数</p>
    
    2020-06-06 15:51:06
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载