查询参数
以下示例说明了如何从 Java 执行 Cypher 查询时使用参数。
有关参数的更多信息,请参阅 Neo4j Cypher 手册.
节点 ID
Map<String,Object> params = new HashMap<>();
params.put( "id", 0 );
String query =
"MATCH (n)" + "\n" +
"WHERE id(n) = $id" + "\n" +
"RETURN n.name";
Result result = transaction.execute( query, params );
节点对象
Map<String,Object> params = new HashMap<>();
params.put( "node", bobNode );
String query =
"MATCH (n:Person)" + "\n" +
"WHERE n = $node" + "\n" +
"RETURN n.name";
Result result = transaction.execute( query, params );
多个节点 ID
Map<String,Object> params = new HashMap<>();
params.put( "ids", asList( 0, 1, 2 ) );
String query =
"MATCH (n)" + "\n" +
"WHERE id(n) IN $ids" + "\n" +
"RETURN n.name";
Result result = transaction.execute( query, params );
字符串文字
Map<String,Object> params = new HashMap<>();
params.put( "name", "Johan" );
String query =
"MATCH (n:Person)" + "\n" +
"WHERE n.name = $name" + "\n" +
"RETURN n";
Result result = transaction.execute( query, params );
用于
SKIP
和 LIMIT
的数字参数Map<String,Object> params = new HashMap<>();
params.put( "s", 1 );
params.put( "l", 1 );
String query =
"MATCH (n:Person)" + "\n" +
"RETURN n.name" + "\n" +
"SKIP $s" + "\n" +
"LIMIT $l";
Result result = transaction.execute( query, params );
正则表达式
Map<String,Object> params = new HashMap<>();
params.put( "regex", ".*h.*" );
String query =
"MATCH (n:Person)" + "\n" +
"WHERE n.name =~ $regex" + "\n" +
"RETURN n.name";
Result result = transaction.execute( query, params );
创建具有属性的节点
Map<String,Object> props = new HashMap<>();
props.put( "name", "Andy" );
props.put( "position", "Developer" );
Map<String,Object> params = new HashMap<>();
params.put( "props", props );
String query = "CREATE ($props)";
transaction.execute( query, params );
创建具有属性的多个节点
Map<String,Object> n1 = new HashMap<>();
n1.put( "name", "Andy" );
n1.put( "position", "Developer" );
n1.put( "awesome", true );
Map<String,Object> n2 = new HashMap<>();
n2.put( "name", "Michael" );
n2.put( "position", "Developer" );
n2.put( "children", 3 );
Map<String,Object> params = new HashMap<>();
List<Map<String,Object>> maps = asList( n1, n2 );
params.put( "props", maps );
String query =
"UNWIND $props AS properties" + "\n" +
"CREATE (n:Person)" + "\n" +
"SET n = properties" + "\n" +
"RETURN n";
Result result = transaction.execute( query, params );
设置节点上的所有属性
Map<String, Object> n1 = new HashMap<>();
n1.put( "name", "Andy" );
n1.put( "position", "Developer" );
Map<String, Object> params = new HashMap<>();
params.put( "props", n1 );
String query =
"MATCH (n:Person)" + "\n" +
"WHERE n.name = 'Michaela'" + "\n" +
"SET n = $props";
transaction.execute( query, params );