以下是我的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]
<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>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。