效果如下:
搜索李淳罡:
添加节点和关系,在这里添加李淳罡-喜欢-绿袍,如下多出李淳罡和绿袍的关系和绿袍的节点
在neo4j中,存储如下图
SDN似乎无法任意存储关系,故在这里使用的neo4j-java-driver完成的以上功能:
[neo4jConfig.java]
加载驱动和提供session
package com.sandalen.water.config;
import com.sandalen.water.PropertiesClass.Neo4jProperties;
import org.neo4j.driver.v1.AuthTokens;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.GraphDatabase;
import org.neo4j.driver.v1.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class Neo4jConfig {
@Autowired
private Neo4jProperties neo4jProperties;
@Bean(name="NeoSession")
public Session initDriver(){
Session session = null;
try
{
Driver driver = GraphDatabase.driver(neo4jProperties.getURI(), AuthTokens.basic(neo4jProperties.getUsername(), neo4jProperties.getPassword()));
session = driver.session();
return session;
}
catch (Exception e){
e.printStackTrace();
return session;
}
}
}
[CypherUtils.java]
这里主要定义了一些cypher语句
package com.sandalen.water.other;
import org.springframework.stereotype.Component;
@Component
public class CypherUtils {
public static String createSingle(String entity){
return "merge (m:Person{name:\""+entity+"\"}) return m";
}
public static String createRelationByTwoNodes(String entityFrom,String relation,String entityTo){
return "match(m:Person{name:\""+entityFrom+"\"}),(n:Person{name:\""+entityTo