neo4j入门教程-java中使用Cypher操作数据库
2016-03-28 16:26
751 查看
操作
节点的操作创建节点
Node node1=graphdb.createNode();
节点添加属性
node1.setProperty("message", "Hello");
获取属性
node1.getProperty("message");
节点删除
node1.delete()
关系的操作
创建
relationship = node1.createRelationshipTo(node2, RelTypes.KNOWS);
添加属性
relationship.setProperty("message", "brave neo4j");
Cypher
ExecutionEngine engine = new ExecutionEngine(graphdb); //构造引擎 ExecutionResult result = engine.execute("start n=node(1) return n,n.message"); //执行cypher语句
返回结果如下:
模板如下
package testneo; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.management.relation.Relation; import org.neo4j.cypher.javacompat.ExecutionEngine; import org.neo4j.cypher.javacompat.ExecutionResult; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.NotInTransactionException; import org.neo4j.graphdb.Relationship; import org.neo4j.graphdb.RelationshipType; import org.neo4j.graphdb.ReturnableEvaluator; import org.neo4j.graphdb.StopEvaluator; import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.Traverser.Order; import org.neo4j.graphdb.factory.GraphDatabaseFactory; import org.neo4j.graphdb.index.Index; import org.neo4j.graphdb.traversal.Traverser; public class test { private static GraphDatabaseService graphdb; private static Index<Node> nodeIndex; private static Relationship relationship; public enum RelTypes implements RelationshipType{ USERS_REFERENCE, USER, KNOWS } private static void registerShutdownHook( final GraphDatabaseService graphDb ) { // Registers a shutdown hook for the Neo4j instance so that it // shuts down nicely when the VM exits (even if you "Ctrl-C" the // running example before it's completed) /*为了确保neo4j数据库的正确关闭,我们可以添加一个关闭钩子方法 * registerShutdownHook。这个方法的意思就是在jvm中增加一个关闭的 * 钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法 * addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。 * 所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁等操作。*/ Runtime.getRuntime().addShutdownHook( new Thread() { @Override public void run() { graphDb.shutdown(); } } ); } public static void main(String[] args) { graphdb = new GraphDatabaseFactory().newEmbeddedDatabase("db"); //your codes //*************************************************** nodeIndex = graphdb.index().forNodes("nodex"); Transaction tx=graphdb.beginTx(); try{ // neo4j statement tx.success(); System.out.println("successfully"); } finally{ tx.finish(); } //cyper statement ExecutionEngine engine = new ExecutionEngine(graphdb); Map<String, Object> params = new HashMap<String, Object>(); params.put( "id", Arrays.asList(1,2) ); ExecutionResult result = engine.execute( "xxx"); System.out.println(result); List<String> columns = result.columns(); System.out.println( columns ); //*************************************************** registerShutdownHook(graphdb); } }
相关文章推荐
- struts2文件下载
- Int和Integer的比较
- struts2 文件上传
- java中对象的转型
- Java多线程中Sleep与Wait的区别
- 算法-java(1)
- 启动genymotion后eclipse不能正常启动adb的处理办法
- CoordinatorLayou eclipse中使用出现的问题
- spring mvc 与struts2比较
- 浅说Java中的反射机制(二)
- 浅析Spring 事务(十九) 简介事务
- spring 注解
- 使用Java进行SNMP编程-SNMP4J-SNMPv1/v2-代码实例
- super.getClass().getName() 返回父类还是当前类
- spring依赖注入
- java基础第五天_静态代码块、类的继承和接口
- java流压缩图片
- Java异常分类及统一处理详解
- MyBatis的一级缓存实现详解 及使用注意事项
- javaBean 规范