@SuppressWarnings("unchecked")
    public <T> Iterable<T> records(Class<T> objClass, T template) {
        if (objClass == null || objClass == ClickHouseRecord.class) {
            return (Iterable<T>) records();
        }

        return () -> ClickHouseRecordMapper.wrap(config, getColumns(), getInitializedSerDe().records, objClass,
                template);
    }
Returns an iterable collection of mapped objects which can be walked through
in a foreach loop. When {@code objClass} is null or {@link ClickHouseRecord},
this is same as calling {@link #records()}.

@param <T>      type of the mapped object
@param objClass non-null class of the mapped object
@param template optional template object to reuse
@return non-null iterable collection
@throws UncheckedIOException when failed to read data(e.g. deserialization)
clickhouse-data/src/main/java/com/clickhouse/data/ClickHouseDataProcessor.java