【问题标题】:JOOQ parsing orderBy and orderDirection to use with dslcontextJOOQ 解析 orderBy 和 orderDirection 以与 dslcontext 一起使用
【发布时间】:2019-01-14 14:38:28
【问题描述】:

我正在从我的控制器获取 orderBy 和 orderDirection,并希望对其进行解析并将其与我使用 DSLContext 进行查询的存储库一起使用。

这是我的方法:

public List<Map<String, Object>> read(@NonNull final String schema,
                                      @NonNull final String tableName,
                                      @NonNull final List<String> columnNames,
                                      @NonNull final String queryConditions,
                                      @NonNull final String orderBy,
                                      @NonNull final String orderDirection) {
    final Table table = table(getTableWithSchema(schema, tableName));
    final List<Condition> conditions = conditionMapper.mapToConditions(queryConditions);
    final List<Field<?>> fields = fieldsMapper.mapToFields(columnNames);
    final SortField sortField = ???

    return crudRepository.read(table, fields, conditions, sortField);
}

后来我的crud将其称为:

public List<Map<String, Object>> read(@NonNull final Table<?> table,
                                      @NonNull final Collection<Field<?>> fields,
                                      @NonNull final Collection<Condition> conditions,
                                      @NonNull final SortField<?> sortField) {
    return dslContext
            .select(fields)
            .from(table)
            .where(conditions)
            .orderBy(sortField)
            .fetchMaps();
}

我将如何创建该 sortField(只有一个)以便将其传递给 dslContext?

【问题讨论】:

  • 只是为了确定,因为您正在使用String 类型(并且因为我很偏执):您的控制器不会将用户输入传递给您的read() 方法,对吗?跨度>
  • 不,它是一个仅供管理员使用的内部工具 - 它由另一个验证参数等的 API 使用
  • 正如我所说,我很偏执。如果 String 值来自您的逻辑之外(通过 API、UI 无关紧要),那么您在这里暴露了 SQL 注入漏洞。我强烈建议您自己清理您的输入,而不是依赖“另一个 API”。

标签: java sql jooq


【解决方案1】:

我自己找到的 - JOOQ 初学者在这里,所以也许它会帮助别人。

SortField<?> sortField = DSL.field(orderBy).sort(SortOrder.valueOf(orderDirection));

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 2021-08-03
    • 2020-10-02
    • 2015-12-27
    • 2019-01-14
    • 1970-01-01
    • 2016-06-03
    • 2018-09-19
    • 1970-01-01
    相关资源
    最近更新 更多