performance - 如何编写参数化密码查询?
问题描述
我当前的代码
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();
}
}
我知道我上面的代码没有使用参数化密码查询;所以它不会在 neo4j 中生成任何查询计划。
为了使用查询计划并从中受益,我需要使用参数化查询。
我的问题 1
如何将这个简单的 Cypher 查询转换为参数化查询以使用存储在变量 (Java) 中的值?
我的问题 2
如果不是 Node1、Node2 和 relationBetweenNode1andNode2 作为参数,那么至少可以将以下值作为参数传递。
PersonNameAttribute = "name";
PersonNameValue = "Jaykant";
ProgrammingLanguageAttribute = "version";
ProgrammingLanguageValue = "Neo4j";
另一个问题
Create (n:Person{name:{name}})Return n
我想在 neo4j 桌面浏览器中运行上述查询。我怎样才能传递参数值呢?
"params":{"name":"Will Smith"}
解决方案
节点和关系类型(Node1、Node2 和 relationBetweenNode1 和Node2)不能作为参数传递,但您可以将以下作为参数传递:
PersonNameAttribute = "name";
PersonNameValue = "Jaykant";
ProgrammingLanguageAttribute = "version";
ProgrammingLanguageValue = "Neo4j";
以上就是这里的回答。
您可以在 Neo4j 浏览器中将参数传递为:
询问:
Create (n:Person{name:{name}})Return n
参数:
:params {"name":"Will Smith"}
推荐阅读
- python - 使用 python-docx-template (docxtpl) 时遍历列表(或 dict)
- c# - 多个 Winforms 项目中的异步等待
- python - 我无法弄清楚查看此数据框特定实例的语法
- r - 获取数据框中重复值的行索引
- seaborn - 在 seaborn 中绘制配对数据,类似于 R 中的 ggpaired
- r - 动态创建单位标签(K,Mn,Bn,Tn)+调整双轴ggplot2图的轴限制?
- javascript - 如何正确地异步运行for循环?
- python - 如何在所有大写单词之后替换句点?
- arduino - 如何在 ESP8266 中使用 SoftwareSerial
- javascript - 如何在 Mars Rover Kata 中停止此循环?