code: public static <T> ExceptionalStream<T, SQLException> rows(final Class<T> targetClass, final ResultSet resultSet) {
          N.checkArgNotNull(targetClass, "targetClass");
          N.checkArgNotNull(resultSet, "resultSet");
  
          final Try.BiFunction<ResultSet, List<String>, T, SQLException> recordGetter = new Try.BiFunction<ResultSet, List<String>, T, SQLException>() {
              private final BiRecordGetter<T, RuntimeException> biRecordGetter = BiRecordGetter.to(targetClass);
  
              @Override
              public T apply(ResultSet resultSet, List<String> columnLabels) throws SQLException {
                  return biRecordGetter.apply(resultSet, columnLabels);
              }
          };
  
          return rows(resultSet, recordGetter);
      }
docs: It's user's responsibility to close the input <code>resultSet</code> after the stream is finished.
  
  @param targetClass Array/List/Map or Entity with getter/setter methods.
  @param resultSet
  @return