(五)官方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进行展示。

  
 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(六)Neo4j综合项目

0、概述 本文以热播电视剧《人民的名义》中的人物关系为数据基础&#xff0c;抛开案例本身的内容&#xff0c;本项目的意义在于指出使用Neo4j数据库的一般流程是什么&#xff1f;包括数据的导入、操作、查询、展示&#xff0c;从而体会出与传统数据库相比Neo4j在处理图数据的巨…

过滤器filter,监听器listener

目录1. filter过滤器1.1 原理1.2 配置1.3 过滤掉脏话demo2. listener监听器2.1 作用2.2 ServletContextListener demo1. filter过滤器 作用:过滤servlet&#xff0c;jsp&#xff0c;js&#xff0c;css&#xff0c;图片对象&#xff0c;以及一切在服务器&#xff0c;客户端想访…

LevelDB 之 arena

粒度比较大&#xff0c;实现简洁清晰明了。对比nginx的&#xff0c;nginx从小到大各种尺寸都有&#xff0c;适用性更好一些。相对要精细很多。Arena.h//z 2014-06-05 10:48:50 L.20947470 BG57IV3 T1840949363.K.F1370514324[T6,L108,R4,V118]// Copyright (c) 2011 The LevelD…

(一)elasticsearch6.1.1安装详细过程

1、配置java环境 检查java环境 满足elasticsearch6.1.1java环境要求&#xff1b; 2、安装ElasticSearch6.1.1 ①为es新生成用户、用户组 su root groupadd esgroup useradd ela -g esgroup -p 5tgbhu8[rootlocalhost fibonacci]# su ela Attempting to create directory /h…

使用jdk DOM,SAX和第三方jar包DOM4J创建,解析xml文件

xml的创建&#xff0c;解析1. 什么是xml文件1.1 什么是xml文件1.2 解析xml的方式&#xff0c;优缺点2. 使用dom操作xml文件2.1 使用dom创建xml文件2.2 使用dom解析xml文件2.3 使用dom对xml文件增删改3. 使用SAX解析xml文件4. 使用DOM4J操作xml文件4.1 使用DOM4J创建xml文件4.2 …

c# 错误 两个输出文件名解析为同一个输出路径

检查同项目的其他文件夹下面已有其他同名窗体,影响设计器 转载于:https://www.cnblogs.com/xiaxiaolu/p/4367166.html

(二)ElasticSearch6.1.1 Python API

0、准备开启数据库 ① 关闭Linux防火墙&#xff0c;这个很重要&#xff0c;否则API总是报错连不上。 # 查看防火墙状态 firewall-cmd --state# 关闭防护墙 systemctl stop firewalld.service# 开启防火墙 systemctl start firewalld.service# 重启防火墙 systemctl restart f…

sqlite3数据库使用

SQLite简介 SQLite是一个软件库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎&#xff0c;这是在普及方面的增长&#xff0c;与它的尺寸大小无关。SQLite 源代码不受版权限制。 什么是sqlite SQLite是一…

(三)ElasticSearch的基本概念

0、面向文档 应用中的对象很少只是简单的键值列表&#xff0c;更多时候它拥有复杂的数据结构&#xff0c;比如包含日期、地理位置、另一个对象或者数组。 总有一天你会想到把这些对象存储到数据库中。将这些数据保存到由行和列组成的关系数据库中&#xff0c;就好像是把一个丰…

(四)ElasticSearch之数据

0、概述 在Elasticsearch中&#xff0c;每一个字段的数据都是默认被索引的。也就是说&#xff0c;每个字段专门有一个反向索引用于快速检索。而且&#xff0c;与其它数据库不同&#xff0c;它可以在同一个查询中利用所有的这些反向索引&#xff0c;以惊人的速度返回结果。 1、…

ajax下拉框省市级联动

目录效果sql数据前后台代码实现效果 初始访问页面 选中省会&#xff0c;自动刷新页面 sql数据 -- 省市联动数据CREATE TABLE PROVINCE (PID NUMBER PRIMARY KEY,PNAME VARCHAR(20) NOT NULL )SELECT * FROM PROVINCEINSERT INTO province VALUES (1, 北京市); INSERT I…

emacs中安装markdown-mode

从markdown-mode官网下载markdown-mode.el 将markdown-mode.el文件放到你的emacs loadpath.这里假如是 ~/.emacs.d/ 在 ~/.emacs 中加入如下代码 (autoload markdown-mode "markdown-mode" "Major mode for editing Markdown files" t) (add-to-list auto-…

python的with关键字

with语句适用于对资源进行访问的场合&#xff0c;确保不管使用过程中是否发生异常都会执行必要的“清理”操作&#xff0c;释放资源&#xff0c;比如文件使用后自动关闭、线程中锁的自动获取和释放等。with表达式其实是try-finally的简写形式。但是又不是全相同。 ""…

pgm2

MRF 笔记 我们先讨论引入 MRF 的必要性。经典的例子就是四个 r.v.s 连成一个正方形的结构的时候&#xff0c;我们没法通过 BN 获得给定对角线两个 r.v.s 而剩下的条件独立&#xff08;不都是 d-sep&#xff09;&#xff0c;反过来如果希望通过 MRF 刻画某些 BN 也是不可行的&am…

一步一步学Remoting系列文章

转自&#xff1a;http://www.cnblogs.com/lovecherry/archive/2005/05/24/161437.html (原创)一步一步学Remoting之一&#xff1a;从简单开始 (原创)一步一步学Remoting之二&#xff1a;激活模式 (原创)一步一步学Remoting之三&#xff1a;复杂对象 (原创)一步一步学Remoting之…

(五)ElasticSearch 6.1.1数据类型

1、elasticsearch的数据类型 1.1、核心数据类型 1.1.1、字符串类型&#xff08;string不再支持&#xff09; 当一个字段需要用于全文搜索(会被分词), 比如产品名称、产品描述信息, 就应该使用text类型. text的内容会被分词, 可以设置是否需要存储: “index”: “true|false”…

(六)ElasticSearch 6.1.1聚合查询

1 普通类型 1.1 基本操作 1.1.1 导入实战数据 数据字段如下&#xff1a; 字段类型作用pricelong汽车售价colortext汽车颜色maketext汽车品牌solddate销售日期 # 创建索引 PUT /cars {"mappings" : {"transactions" : {"properties" : {"…