PreparedStatement 模糊匹配 结果却:Parameter index out of range (1 > number of parameters, which is 0)

简介: PreparedStatement 模糊匹配 结果却:Parameter index out of range (1 > number of parameters, which is 0)

PreparedStatement 模糊匹配 结果却: PreparedStatementCallback; SQL [select count(*) from user where 1 = 1 ]; Parameter index out of range (1 > number of parameters, which is 0).; nested exception is java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

1.在数据库的查询中,我们这样进行模糊匹配:

SELECT * FROM USER WHERE NAME LIKE '%李%' LIMIT 0,5;

2.在Java中我们这么定义SQL

//注意空格添加,符合sql语句
String sql = "select * from user where 1 = 1 ";

3.进行转成字符串进行拼接:

StringBuilder sb = new StringBuilder(sql);

4.遍历Map集合,根据键寻找值

 //2.遍历map
        Set<String> keySet = condition.keySet();
        //定义参数的集合存储sql语句中?的参数
        List<Object> params = new ArrayList<Object>();

5.循环遍历Map集合的键找对应的值

//获取value
            String value = condition.get(key)[0];
            //判断value是否有值
            if (value != null && !"".equals(value)) {
                //有值
                sb.append(" and " + key + " like ? ");
                params.add("%" + value + "%");
            }
            

一定要注意 ? 是英文的,还有 空格 和 % 的拼接,要符合sql语句


6.最后返回(当然这只是分页查询的一部分,剩下的还有分页显示)


 return template.queryForObject(sql, Integer.class, params.toArray());
        return template.queryForObject(sb.toString(), Integer.class, params.toArray());

上一个返回sql是错误的,我们进行的是sql的拼接操作数据库,原始的sql是定义的模糊的,如果返回则前面一堆操作就白忙了,而且会报标题的错误,一定要切记,初学很容易直接返回,然后浏览器报错找不到原因,浪费时间(ps:两天的亲身经历啊啊啊啊)

相关文章
|
应用服务中间件
JBWEB002004: More than the maximum number of request parameters (GET plus POST) for a single request
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/inforstack/article/details/54427972 异常 17:51:57,240 ERROR [org.
1336 0
|
算法
Leetcode 313. Super Ugly Number
题目翻译成中文是『超级丑数』,啥叫丑数?丑数就是素因子只有2,3,5的数,7 14 21不是丑数,因为他们都有7这个素数。 这里的超级丑数只是对丑数的一个扩展,超级丑数的素因子不再仅限于2 3 5,而是由题目给定一个素数数组。与朴素丑数算法相比,只是将素因子变了而已,解法还是和朴素丑数一致的。
104 1
|
6月前
|
存储 SQL 算法
LeetCode 题目 65:有效数字(Valid Number)【python】
LeetCode 题目 65:有效数字(Valid Number)【python】
|
7月前
|
存储 算法
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
52 0
|
存储
Leetcode Single Number II (面试题推荐)
给你一个整数数组,每个元素出现了三次,但只有一个元素出现了一次,让你找出这个数,要求线性的时间复杂度,不使用额外空间。
39 0
|
算法
LeetCode 414. Third Maximum Number
给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。
97 0
LeetCode 414. Third Maximum Number
|
存储
LeetCode 313. Super Ugly Number
编写一段程序来查找第 n 个超级丑数。 超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数。
104 0
LeetCode 313. Super Ugly Number
|
算法
LeetCode 306. Additive Number
累加数是一个字符串,组成它的数字可以形成累加序列。 一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。 给定一个只包含数字 '0'-'9' 的字符串,编写一个算法来判断给定输入是否是累加数。 说明: 累加序列里的数不会以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。
128 0
LeetCode 306. Additive Number
|
算法
LeetCode 268. Missing Number
给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
93 0
LeetCode 268. Missing Number
LeetCode 264. Ugly Number II
编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。
73 0
LeetCode 264. Ugly Number II