@Override
    public SqlExpression parseExpression(SqlConfig config) {
        String target = config.getAttributes().get("target");
        boolean targetRequired = target == null;
        if ( targetRequired ) {
            throw new DataAccessException("必須属性「target」が指定されていません。");
        }

        Class targetClass = ClassUtil.classForName(target, Object.class);

        String strategy = config.getAttributes().get("strategy");
        boolean strategyRequired = strategy == null;
        if ( strategyRequired ) {
            throw new DataAccessException("必須属性「strategy」が指定されていません。");
        }

        ParsedExpression parsedExpression = doParseExpression(config.getSqlQuery());

        SqlExpression sqlExpression = createNamedExpression(config.getId(), targetClass, strategy, parsedExpression);

        return sqlExpression;
    }