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

Java JOOQ解析orderBy和orderDirection以与dslcontext一起使用,java,sql,jooq,Java,Sql,Jooq,我从我的控制器获取orderBy和orderDirection,并希望解析它,并将其用于我使用DSLContext进行查询的存储库 以下是我的方法: public List read(@NonNull final String schema, @非空的最终字符串tableName, @非空的最终列表列名称, @非空的最终字符串查询条件, @非空的最终字符串orderBy, @非Null最终字符串(orderDirection){ final Table Table=表(getTableWithS

我从我的控制器获取orderBy和orderDirection,并希望解析它,并将其用于我使用DSLContext进行查询的存储库

以下是我的方法:

public List read(@NonNull final String schema,
@非空的最终字符串tableName,
@非空的最终列表列名称,
@非空的最终字符串查询条件,
@非空的最终字符串orderBy,
@非Null最终字符串(orderDirection){
final Table Table=表(getTableWithSchema(schema,tableName));
最终列表条件=conditionMapper.mapToConditions(查询条件);

最终列表我自己找到的-这里是JOOQ初学者,所以也许它会帮助别人

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

可以肯定的是,由于您使用的是
String
类型(而且我是偏执狂):您的控制器不会将用户输入传递给您的
read()
方法,对吗?不,这是一个只供管理员使用的内部工具-它被另一个验证参数的API使用。我说过,我是偏执狂。如果
字符串
值来自您的逻辑之外(通过API、UI,没关系),您在这里暴露了一个SQL注入漏洞。我强烈建议您自己清理输入,而不是依赖“另一个API”。