private T transformSQLtoObject(ResultSet resultSet) {
        T t;
        try {
            t = (T) targetClass.newInstance();
        } catch (InstantiationException | IllegalAccessException e) {
            throw new RuntimeException(e);
        }

        try {
            if (resultSet.next()) {
                List<Field> resultFields = Arrays.asList(t.getClass().getFields());
                for (Field f : resultFields) {
                    f.setAccessible(true);
                    String name = camelToUnder(f.getName());
                    Object object = resultSet.getObject(name);
                    try {
                        f.set(t, object);
                    } catch (IllegalAccessException e) {
                        throw new RuntimeException("WTF", e);
                    }
                }
            } else {
                throw new RuntimeException("Пустой результсет");
            }
            if (resultSet.next()) throw new RuntimeException("Не уникальный результат");
            return t;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }