天天看點

Neo4j-在JAVA中執行Cypher查詢

在JAVA中使用Cypher涉及到org.neo4j.cypher.javacompat包的兩個類.      
類名 方法名 說明
ExecutionEngine public ExecutionResult execute(String query) 執行query傳回存儲結果集的一個疊代器(ExecutionResult)
(用于執行Cypher Query) public ExecutionResult execute(String query, Map<String,Object> params) 執行query傳回存儲結果集的一個疊代器(ExecutionResult) 其中,params是query所需的參數
ExecutionResult public <T> Iterator<T> columnAs(String n) 傳回結果集中n作為列名指定的列資訊的集合
(儲存Cypher Query執行後的結果集) public List<String> columns() 傳回結果集各個列的列名
public Iterator<Map<String,Object>> iterator() 結果集的一個疊代器,每個元素代表一行記錄(存儲為map)
public String toString()
public void toString(PrintWriter writer)
可參考的代碼片段:      
String rows = "";
//執行一個Cypher Query的查詢
ExecutionEngine engine = new ExecutionEngine( db );
ExecutionResult result = engine.execute( "start n=node(0) return n, n.name" );
//直接列印出Query結果
System.out.println(result.toString());
//擷取結果集的列名的清單
List<String> columns = result.columns();
//擷取指定列的結果集
Iterator<Node> n_column = result.columnAs('n');
for(Node node : IteratorUtil.asIterable(n_column)) {
    String nodeResult = node + ": " + node.getProperty("name");
}
//擷取結果集的每條記錄
for(Map<String, Object> row : result) {
    for(Entry<String, Object> column : row.entrySet()) {
        rows += column.getKey() + ":" + column.getValue() + ";";
    }
    rows += "\n";
}