Идея, лежащая в основе параметризованных запросов, заключается в повторном использовании (кэшировании) планов выполнения.
Если метка узла или тип отношения не изменяются, план выполнения будет в целом одинаковым, поэтому можно будет получить выгоды от кэширования плана выполнения.
В настоящее время я выполняю полный Cypher Query с использованием Java String Building. Вместо того, чтобы создавать весь Cypher Query с использованием построения String, я хочу передать значения свойств в качестве значений параметров вместе с именами свойств в качестве параметров или нет. Мне нужен пример кода, руководство для того же.
Мой текущий код
import org.neo4j.driver.v1.AuthTokens;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.GraphDatabase;
import org.neo4j.driver.v1.Session;
public class ForStackoverflowQuestion {
public static void main(String[] args) {
Driver driver = GraphDatabase.driver(
"bolt://localhost:7687", AuthTokens.basic("neo4j", "12345"));
Session session = driver.session();
String Node1 = "Software_Engineer";
String Node2 = "Programming_Language";
String relationBetweenNode1andNode2 = "LEARNS";
String PersonNameAttribute = "name";
String PersonNameValue = "Jaykant";
String ProgrammingLanguageAttribute = "version";
String ProgrammingLanguageValue = "Neo4j";
String t = "MERGE(n1:"+Node1+"{"+PersonNameAttribute+":\""+PersonNameValue+"\"})"+"-[:"+relationBetweenNode1andNode2+"]->(n2:" + Node2 +" {"+ProgrammingLanguageAttribute+":'"+ProgrammingLanguageValue+"'})";
System.out.println(t);
session.run(t);
session.close();
driver.close();
}
}
Я понимаю, что мой код не использует Parameterized Cypher Query; поэтому он не будет генерировать план запроса в neo4j.
Чтобы использовать план запросов и использовать его, мне нужно использовать параметризованный запрос.
Если в качестве параметров не указан Node1, Node2, а ratioBetweenNode1andNode2, то как минимум следующие значения могут быть переданы в качестве параметров.
PersonNameAttribute = "name";
PersonNameValue = "Jaykant";
ProgrammingLanguageAttribute = "version";
ProgrammingLanguageValue = "Neo4j";
Любой пример кода? Учебное пособие