@Override
    public <T> T mapRow(ResultSet resultSet, Class<T> clazz) {
        if ( ! initialized ) {
            throw new DataAccessException("初期化されていません。");
        }

        T target = ClassUtil.createInstance(clazz);

        ResultSetMetaData metaData = DataSourceUtil.getMetaData(resultSet);
        final int columnCount = DataSourceUtil.getColumnCount(metaData);
        for ( int i = 0 ; i < columnCount ; i ++ ) {
            String columnName = DataSourceUtil.getColumnName(metaData, i + 1);
            Object columnValue = DataSourceUtil.getObject(resultSet, i + 1);
            Method setter = setterResolver.resolveSetter(columnName, clazz);
            boolean setterRequired = setter == null;
            if ( setterRequired ) {
                throw new DataAccessException(
                        "対応するセッタが見つかりません: カラム名=" + columnName + ", オブジェクト=" + clazz);
            }

            ClassUtil.invokeMethod(setter, target, columnValue);
        }

        return target;
    }