JOOQ解析orderBy和orderDirection以与dslcontext一起使用

时间:2018-08-07 13:22:45

标签: java sql jooq

我正在从控制器中获取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);
}

稍后在我的文章中将其称为:

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?

1 个答案:

答案 0 :(得分:1)

我自己找到了-JOOQ初学者在这里,所以也许它将帮助某人。

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