Java 有没有办法得到谓词<;T>;条件作为字符串?

Java 有没有办法得到谓词<;T>;条件作为字符串?,java,java-stream,predicate,Java,Java Stream,Predicate,我正在学习JDBC,我想如果我将值映射传递给变更,并将条件映射传递给update()方法,那会很有趣 我有点像: public void update(Map<String, Serializable> valuesToChange, Map<String, Predicate<T>> mapOfConditions){...} 如何以字符串形式接收条件,如: lastName==“作业”或id>20 我需要它作为SQL查询中的WHERE条件 干杯你所要求的

我正在学习JDBC,我想如果我将值映射传递给变更,并将条件映射传递给update()方法,那会很有趣

我有点像:

public void update(Map<String, Serializable> valuesToChange, Map<String, Predicate<T>> mapOfConditions){...}
如何以字符串形式接收条件,如:

lastName==“作业”或id>20

我需要它作为SQL查询中的WHERE条件


干杯

你所要求的几乎是不可能的。它需要将谓词中的字节码反向编译为Java,然后将Java转换为SQL。我不敢相信你会愿意冒这个险,也因为收益微乎其微


在谓词为
id->id==20
的情况下,这似乎很简单。然而,谓词可能很复杂。它们可能涉及没有直接SQL对应项的Java语言构造。它们可能涉及对库方法(包括第三方库方法)的调用,甚至是对远程服务的调用,以及对用Java以外的其他语言编写的代码的调用。我认为您无法将所有这些转换为SQL。

您所要求的几乎是不可能的。它需要将谓词中的字节码反向编译为Java,然后将Java转换为SQL。我不敢相信你会愿意冒这个险,也因为收益微乎其微


在谓词为
id->id==20
的情况下,这似乎很简单。然而,谓词可能很复杂。它们可能涉及没有直接SQL对应项的Java语言构造。它们可能涉及对库方法(包括第三方库方法)的调用,甚至是对远程服务的调用,以及对用Java以外的其他语言编写的代码的调用。我认为您无法将所有这些转换为SQL。

我不明白。您是否试图解析字符串并查找/构造相应的
谓词
对象?如果我有谓词:id->id==20,我想接收字符串:“id==20”,我不明白这意味着什么。也许如果你展示了你打算如何使用它…我想把代码中的lambda转换成字符串形式。我想稍后在SQL查询中使用该字符串形式。所以,如果我有谓词:salary->salary>20000,我希望得到“salary>20000”字符串,以便以后使用,比如:“SELECT*WHERE salary>20000”;Lambdas是编译时语法元素。在运行时,在本例中,它们只是
谓词
对象。没有办法反省他们实现的逻辑。不要存储
谓词
,而是存储
,其中
某物
生成相应检查所需的SQL。我不明白。您是否试图解析字符串并查找/构造相应的
谓词
对象?如果我有谓词:id->id==20,我想接收字符串:“id==20”,我不明白这意味着什么。也许如果你展示了你打算如何使用它…我想把代码中的lambda转换成字符串形式。我想稍后在SQL查询中使用该字符串形式。所以,如果我有谓词:salary->salary>20000,我希望得到“salary>20000”字符串,以便以后使用,比如:“SELECT*WHERE salary>20000”;Lambdas是编译时语法元素。在运行时,在本例中,它们只是
谓词
对象。没有办法反省他们实现的逻辑。与其存储一个
谓词
,不如存储一个
,其中
某物
生成相应检查所需的SQL。
    predicateMap.put("id", id -> (int) id > 20);
    predicateMap.put("last_name", lastName -> lastName  == "Jobs");