(五)官方Neo4j 3.3.9 Java API例子
0、概述
本文以Neo4j 3.3.9为基础,采用https://neo4j.com/docs/api/java-driver/current/给出的官方例子。下面大概记录下工程建立的过程,因为版本差异代码和官方给出的稍有差别。
1、使用eclipse,用自己安装的mvn新建一个mvn工程;
2、pox.xml
# 只复制Neo4j dependency即可,其它的东西不用变
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.neo4j.study</groupId><artifactId>sample</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>sample</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/org.neo4j/neo4j-jdbc-driver --><dependency><groupId>org.neo4j.driver</groupId><artifactId>neo4j-java-driver</artifactId><version>1.7.2</version></dependency></dependencies>
</project>
3、SmallExample.java
package com.neo4j.study.sample;import java.util.Iterator;
import java.util.List;import org.neo4j.driver.v1.AuthTokens;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.GraphDatabase;
import org.neo4j.driver.v1.Record;
import org.neo4j.driver.v1.Session;
import org.neo4j.driver.v1.StatementResult;
import org.neo4j.driver.v1.Transaction;
import org.neo4j.driver.v1.Value;
import org.neo4j.driver.v1.Values;
import org.neo4j.driver.v1.types.Node;
import org.neo4j.driver.v1.types.Path;
import org.neo4j.driver.v1.types.Relationship;/*** Hello world!**/
public class SmallExample {// Driver objects are thread-safe and are typically made available// application-wide.Driver driver;public SmallExample(String uri, String user, String password) {driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "5tgbhu8"));}private void addPerson(String name) {// Sessions are lightweight and disposable connection wrappers.try (Session session = driver.session()) {// Wrapping Cypher in an explicit transaction provides atomicity// and makes handling errors much easier.try (Transaction tx = session.beginTransaction()) {tx.run("Merge (a:People {name: {name}})", Values.parameters("name", name));tx.success(); // Mark this write as successful.}}}private void printPeople(String name) {Session session = driver.session();// Auto-commit transactions are a quick and easy way to wrap a read.StatementResult result = session.run("MATCH (a:People) WHERE a.name STARTS WITH {name} RETURN a.name as Name",Values.parameters("name", name));// Each Cypher execution returns a stream of records.while (result.hasNext()) {// Record 是一行记录,内容是什么取决于你return的东西Record record = result.next();System.out.println(record);// Values can be extracted from a record by index or name.
// System.out.println(record.get("PeopleName").asString());System.out.println(String.format("%s", record.get("Name").asString()));}}private void getPeoples() {Session session = driver.session();// Auto-commit transactions are a quick and easy way to wrap a read.StatementResult result = session.run("MATCH (b:People) RETURN b");// Each Cypher execution returns a stream of records.while (result.hasNext()) {// Record 是一行记录,内容是什么取决于你return的东西Record record = result.next();System.out.println(record);List<Value> list = record.values();for (Value v : list) {Node n = v.asNode();System.out.println(n.labels().iterator().next() + "--" + n.id());for (String k : n.keys()) {System.out.println(k + "---" + n.get(k));}System.out.println("==========================");}// Values can be extracted from a record by index or name.
// System.out.println(record.get("b").asString());}}private void getPeoplesAndRelation(){Session session = driver.session();// Auto-commit transactions are a quick and easy way to wrap a read.StatementResult result = session.run("MATCH p=(b:People)-[]-(c) RETURN p");
// "MATCH (b:People)-[]-(c) RETURN b,c");// Each Cypher execution returns a stream of records.while (result.hasNext()){//Record 是一行记录,内容是什么取决于你return的东西Record record = result.next();System.out.println(record);List<Value> list = record.values();for(Value v : list){Path p = v.asPath();Node start = p.start();for(String k:start.keys()){System.out.println(k+"---"+start.get(k) );}System.out.println("==========================");Iterator i = p.relationships().iterator();while(i.hasNext()){
// System.out.println(i.next()+"--------------------------");Relationship r = (Relationship)i.next() ;System.out.println(r.type());System.out.println(r.startNodeId() + "->"+r.endNodeId());System.out.println(r.id());}Node end = p.end();for(String k:end.keys()){System.out.println(k+"---"+end.get(k) );}System.out.println("==========================");// Node n = v.asNode();
// System.out.println(n.labels().iterator().next()+"--"+n.id());
//
// for(String k:n.keys())
// {
// System.out.println(k+"---"+n.get(k) );
// }
// System.out.println("==========================");}// Values can be extracted from a record by index or name.
// System.out.println(record.get("b").asString());}}public void close() {// Closing a driver immediately shuts down all open connections.driver.close();}public static void main(String[] args) {// very usefully from https://www.cnblogs.com/April1995/p/10526152.html
// Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "5tgbhu8"));
// try (Session session = driver.session()) {
// try (Transaction transaction = session.beginTransaction()) {
// transaction.run("create(n:A1{NAME:{NAME},TITLE:{TITLE}})",
// Values.parameters("NAME", "xiaoming", "TITLE", "Wang"));
// transaction.success();
// }
// try (Transaction tx = session.beginTransaction()) {
// StatementResult result = tx.run(
// "match(a:A1) WHERE a.NAME = {NAME} RETURN a.NAME AS NAME,a.TITLE AS TITLE",
// Values.parameters("NAME", "xiaoming"));
// while (result.hasNext()) {
// Record record = result.next();
// System.out.println(
// String.format("%s %s", record.get("TITLE").asString(), record.get("NAME").asString()));
// }
// }
// }
// driver.close();SmallExample example = new SmallExample("bolt://master:7687", "neo4j", "123456");
// example.addPerson("Ada");
// example.addPerson("Alice");
// example.addPerson("Bob");
// example.printPeople("A");
// example.getPeoples();example.getPeoplesAndRelation();example.close();}
}
4、Neo4j可视化使用的技术
Neo4j的brower 展现是用:D3.js,查Neo4j,转为D3需要的格式,传给D3进行展示。
(五)官方Neo4j 3.3.9 Java API例子相关推荐
- 知识图谱java实现_知识图谱:neo4j(四)Java API
知识图谱:neo4j(四)Java API 知识图谱:neo4j(四)Java API Neo4j Java API Neo4j 提供 JAVA API 以编程方式执行所有数据库操作.它支持两种类型的 ...
- 2021年大数据Kafka(五):❤️Kafka的java API编写❤️
全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的java API编写 一.生产者代码 第一步: ...
- mybatis入门(五)之Java API
转载自 mybatis Java API Java API 既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了.MyBatis 的 Java API 就是你收获你所 ...
- 容易忽视但是功能灰常强大的Java API(五. 二分查找)
五. 二分查找 二分查找是一个高效的查找算法,在java的集合对象中也提供了二分查找的算法,如下面的java api接口: java.util.Arrays.binarySearch(java.lan ...
- sphinx java_把 sphinx 官方提供的 java api 添加到 maven 库
如果客户端和服务器版本不一致可能会出现如下错误DEPRECATED: Do not call this method or, even better, use SphinxQL instead of ...
- Hbase高手之路 -- 第五章 -- HBase的Java API编程
Hbase高手之路 – 第五章 – HBase的Java API编程 一. 需求与数据集 某自来水公司,需要存储大量的缴费明细数据,以下截取了缴费明细的一部分内容: 因为缴费明细的数据记录非常庞大,该 ...
- 2021年大数据ZooKeeper(五):ZooKeeper Java API操作
目录 ZooKeeper Java API操作 引入maven坐标 节点的操作 ZooKeeper Java API操作 这里操作Zookeeper的JavaAPI使用的是一套zookeeper客户端 ...
- java官方 jax rs_jboss7 Java API for RESTful Web Services (JAX-RS) 官方文档
原文:https://docs.jboss.org/author/display/AS7/Java+API+for+RESTful+Web+Services+(JAX-RS) Content Tuto ...
- 简单几步,将官方的Java API文档制作成chm格式文件!
CHM格式的Java API 长什么样? 如何制作 进入Oracle官网下载Java API文档 将下载后的文档解压如下 使用CHMWriter制作 双击"CHMWriter.exe&quo ...
最新文章
- hadoop 基础环境搭建(一)
- 四说大数据时代“神话”:从大数据到深数据
- Java高版本编译低版本运行_Java高版本编译低版本运行错误(ConcurrentHashMap.keySet)...
- android Java BASE64编码和解码二:图片的编码和解码
- java中coverage怎么取消_别人家的ABM都是怎么成功的?
- clion的project区的字体以及自动排版的快捷键修改
- Java开发找工作最懵圈的问题:到底啥是分布式系统开发经验?
- [置顶] 第十七章——配置SQLServer(2)——32位和64位系统中的内存配置
- 「傻瓜」才能写出好代码!
- python数据框转化为矩阵_在Python中将系列重塑为Dataframe矩阵
- hibernate 批量插入 Batch
- ajax 上传图片进度条,ajax实现图片上传与进度条
- 8 EXCEL选择填充与粘贴
- 如何在excel中取消合并单元格后内容自动填充?
- 五分钟GO、KEGG和COG注释和富集分析
- 图书云小程序体验版1.0.1发布
- SIGGRAPH 2022最佳技术论文奖重磅出炉!北大陈宝权团队获荣誉提名
- Win7安装VMware
- 视频超分:TGA(Video Super-resolution with Temporal Group Attention)
- web端用canvas把航拍图片实际场景渲染在高德卫星地图上面