JDBC预编译SQL语句正常,但是结果集为空的问题

问题遇到的现象和发生背景
遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

学习JavaWeb遇到了一些问题,怀疑是和JDBC相关的
问题描述:我根据BaseDAO写了两个实现类的代码,通过BaseDAO传入的可变参数填充占位符,但是有一个可以实现查询,有一个只能查询到空值,通过调试,我发现两段代码都能正确的预编译SQL语句,但是其中一个查询的结果集总是为空的

希望各位好兄弟能指点一二
这边是我BaseDAO的代码

//有事务版本的通用的返回多个对象查询方法
    public List getForList(Connection connection, String sql, Object ...args){
        //Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            //connection = JDBCutil.getConnection();
            preparedStatement = connection.prepareStatement(sql);
            //填充占位符
            for (int i = 0;i < args.length;i++){
                preparedStatement.setObject(i+1,args[i]);
            }
            //返回结果集
            resultSet = preparedStatement.executeQuery();
            //获取结果集元数据
            ResultSetMetaData metaData = resultSet.getMetaData();
            //获取结果集当前里面的列数
            int columnCount = metaData.getColumnCount();
            ArrayList list = new ArrayList<>();
            while (resultSet.next()){
                T t = (T) clazz.newInstance();
                //处理这一行数据的每一列
                for(int i = 0;i < columnCount;i++){
                    //获取这列的数值
                    Object object = resultSet.getObject(i + 1);
                    //获取这列的名字(数据库表中)
                    //String columnName = metaData.getColumnName(i + 1);
                    String columnLabel = metaData.getColumnLabel(i + 1);
                    //调用方法,通过列名查询到该字段,并且返回一个filed对象
                    Field declaredField = t.getClass().getDeclaredField(columnLabel);
                    //提高反射权限
                    declaredField.setAccessible(true);
                    //给当前根据列名字查询到的filed对象赋值
                    declaredField.set(t,object);
                }
                list.add(t);
            }
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            //JDBCutil.closeResource(connection,preparedStatement,resultSet);
            JDBCutil.closeResource(null,preparedStatement,resultSet);
        }
        return null;
    }

这边是我实现类查询为空的代码

@Override
    public List getByNewPage(Connection connection, String keyword, int pageNo) {
        String sql = "select id,name,price,count,remark from fruit where name = ? or remark = ? limit ?, 5";
        List forList = getForList(connection,  sql, keyword,keyword,(pageNo-1)*5);
        return forList;
    }

这边是我实现类可以查询到数据的代码

@Override
    public List getByPage(Connection connection, int pageNo) {
        String sql = "select id,name,price,count,remark from fruit limit ?, 5";
        List forList = getForList(connection,  sql, (pageNo-1)*5);
        return forList;
    }

1.直接在数据库执行没数据的sql,看是否有数据
2.如果数据库查询有数据,说明数据查到后,在代码里进行赋值时有问题
3.大概率是传参导致的sql查不到数据

一个没带where条件所以有数据;
另一个带有where条件,如果没有满足where条件的数据就是空结果集。
望采纳,谢谢!