有什么方法可以将 Predicate<T> 条件作为字符串获取吗?
Is there any way to get Predicate<T> condition as a String?
我正在学习 JDBC 我认为如果我将值映射传递给更改并将条件映射传递给 update() 方法会很有趣。
我有类似的东西:
public void update(Map<String, Serializable> valuesToChange, Map<String, Predicate<T>> mapOfConditions){...}
如何接收谓词测试的字符串?
假设我有:
predicateMap.put("id", id -> (int) id > 20);
predicateMap.put("last_name", lastName -> lastName == "Jobs");
如何接收字符串中的条件,例如:
lastName == "Jobs" 或 id > 20
我需要它作为 SQL 查询中的 WHERE 条件。
干杯
你问的几乎是不可能的。这将要求您将谓词中的字节代码反向编译为 Java,然后从那里将 Java 转换为 SQL。我不敢相信你会想要麻烦,也是因为收益微乎其微。
在谓词为id -> id == 20
的情况下可能看起来很简单。但是,谓词可能很复杂。它们可能涉及 Java 没有直接 SQL 对应物的语言结构。它们可能涉及调用库方法,包括第 3 方库方法,甚至调用远程服务和用 Java 以外的其他语言编写的代码。我认为您无法将所有这些翻译成 SQL.
我正在学习 JDBC 我认为如果我将值映射传递给更改并将条件映射传递给 update() 方法会很有趣。
我有类似的东西:
public void update(Map<String, Serializable> valuesToChange, Map<String, Predicate<T>> mapOfConditions){...}
如何接收谓词测试的字符串?
假设我有:
predicateMap.put("id", id -> (int) id > 20);
predicateMap.put("last_name", lastName -> lastName == "Jobs");
如何接收字符串中的条件,例如:
lastName == "Jobs" 或 id > 20
我需要它作为 SQL 查询中的 WHERE 条件。
干杯
你问的几乎是不可能的。这将要求您将谓词中的字节代码反向编译为 Java,然后从那里将 Java 转换为 SQL。我不敢相信你会想要麻烦,也是因为收益微乎其微。
在谓词为id -> id == 20
的情况下可能看起来很简单。但是,谓词可能很复杂。它们可能涉及 Java 没有直接 SQL 对应物的语言结构。它们可能涉及调用库方法,包括第 3 方库方法,甚至调用远程服务和用 Java 以外的其他语言编写的代码。我认为您无法将所有这些翻译成 SQL.