java連線neo4j查詢,基於driver
阿新 • • 發佈:2019-01-08
**下面是java程式碼**
---------
public class Neo4jDrivertest {
// 驅動程式物件是執行緒安全的,通常是在應用程式範圍內提供的。
Driver driver;
public Neo4jDrivertest(String uri, String user, String password) { driver = GraphDatabase.driver(uri, AuthTokens.basic(user, password)); } /** * 根據cql語句進行查詢節點,關係線等資料 * * @param cql * @return */ public Map<String, HashSet<Map<String, Object>>> printJSON(String cql) { Map<String, HashSet<Map<String, Object>>> retuMap = new HashMap<String, HashSet<Map<String, Object>>>(); try { Session session = driver.session(); StatementResult result = session.run(cql); HashSet<Map<String, Object>> nodedatas = new HashSet<Map<String, Object>>();// 存放所有的節點資料 HashSet<Map<String, Object>> allrelationships = new HashSet<Map<String, Object>>();// 存放所有的節點資料 while (result.hasNext()) { Record record = result.next(); Map<String, Object> date = record.asMap();// 這裡面存的是這個關係的鍵值對,其實就是起始節點,關係,結束節點 for (String key : date.keySet()) { Object object = date.get(key); InternalPath data = (InternalPath) object;// 強制轉換 Iterable<Node> allnodes = data.nodes(); for (Node node : allnodes) { long nodeid = node.id(); Map<String, Object> nodedatamap = new HashMap<String, Object>(); Map<String, Object> data1 = node.asMap();// 新增節點的屬性 for (String key1 : data1.keySet()) { nodedatamap.put(key1, data1.get(key1)); } nodedatamap.put("name", nodeid); nodedatas.add(nodedatamap); } Iterable<Relationship> relationships = data.relationships(); Map<String, Object> shipdata = new HashMap<String, Object>(); for (Relationship relationship : relationships) { Map<String, Object> data1 = relationship.asMap();// 新增關係的屬性 for (String key1 : data1.keySet()) { shipdata.put(key1, data1.get(key1)); } long source = relationship.startNodeId();// 起始節點id long target = relationship.endNodeId();// 結束節點Id shipdata.put("source", source);// 新增起始節點id shipdata.put("target", target); } allrelationships.add(shipdata); } } retuMap.put("nodes", nodedatas); retuMap.put("relation", allrelationships); } catch (Exception e) { e.printStackTrace(); // TODO: handle exception } finally { close(); } return retuMap; } public void close() { // Closing a driver immediately shuts down all open connections. driver.close(); }
}
“`