1.主函数
package com.nienmax.neo4j_jdbc.second;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import com.nienmax.neo4j_jdbc.second.service.SecondService;
import com.nienmax.neo4j_jdbc.second.service.impl.SecondServiceImpl;
public class SecondStarter {
SecondService s = new SecondServiceImpl();
public static void main(String[] args) throws SQLException {
SecondStarter second = new SecondStarter();
Connection con = DriverManager.getConnection("jdbc:neo4j://10.215.4.12:7474/","neo4j","ninemax");
//second.searchBetweenNodeRelation(con);
//second.searchNodeByLabel(con);
second.searchNodeByArticleId(con);
//second.searchNodeByLabelAndArticleId(con);
con.close();
}
public void createNode(Connection con){
Map<String,Object> map = new HashMap<String,Object>();
map.put("ArticleId", UUID.randomUUID());
map.put("Author", "ak");
map.put("DOI", "www.baidu.com");
map.put("Issue", "10");
map.put("Orgnization", "ninemax");
map.put("Publisher", "darker");
map.put("Title", "Test");
map.put("Volumn", 10);
map.put("Year", 2016);
s.createNode(con, map);
}
public void createNodeRelation(Connection con){
s.createNodeRelation(con, "szybh201504002", "trtb200706013", "M");
}
public void deleteNodeRelation(Connection con){
s.deleteNodeRelation(con, "szybh201504002", "trtb200706013");
}
public void searchBetweenNodeRelation(Connection con){
s.searchBetweenNodeRelation(con, "szybh201504002","NSTL_QKJJ0230322326");
}
public void searchNodeByLabel(Connection con){
s.searchNodeByLabel(con, "Conference");
}
public void searchNodeByArticleId(Connection con){
s.searchNodeByArticleId(con, "szybh201504002");
}
public void searchNodeByLabelAndArticleId(Connection con){
s.searchNodeByLabelAndArticleId(con,"szybh201504002","Article");
}
}
2.接口
package com.nienmax.neo4j_jdbc.second.service;
import java.sql.Connection;
import java.util.Map;
/**
*
* @author AckMan
*
*/
public interface SecondService {
// 创建节点
public void createNode(Connection con,Map<String,Object> map);
// 得到所有节点
public void getAllNode(Connection con);
// 创建节点关系
public void createNodeRelation(Connection con,String ArticleId1,String ArticleId2,String RelationAttr);
// 删除节点关系
public void deleteNodeRelation(Connection con,String ArticleId1,String ArticleId2);
// 查询两个节点的关系属性
public void searchBetweenNodeRelation(Connection con,String ArticleId1,String ArticleId2);
// 查询指定ID关系的节点
public void searchNodeByArticleId(Connection con,String ArticleId);
// 查询指定标签关系的节点
public void searchNodeByLabel(Connection con,String label);
// 查询指定标签,指定ID关系的节点
public void searchNodeByLabelAndArticleId(Connection con,String label,String ArticleId);
}
3.实现类
package com.nienmax.neo4j_jdbc.second.service.impl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Map;
import com.nienmax.neo4j_jdbc.second.service.SecondService;
/**
*
* @author AckMan
*
*/
public class SecondServiceImpl implements SecondService{
public void createNode(Connection con, Map<String,Object> map) {
try {
Statement stmt = con.createStatement();
boolean flag = stmt.execute("CREATE (n:Article:Unknown{ "
+ "ArticleId:'"+ map.get("ArticleId")
+ "',Author:'"+ map.get("Author")
+ "',DOI:'" + map.get("DOI")
+ "',Issue:'" + map.get("Issue")
+ "',Orgnization:'" + map.get("Orgnization")
+ "',Publisher:'" + map.get("Publisher")
+ "',Title:'" + map.get("Title")
+ "',Volumn:'"+ map.get("Volumn")
+ "',Year:'" + map.get("Year")
+ "' })");
if (flag == true) {
System.out.println("Node Create Success!");
} else {
System.out.println("Node Create Fail!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void getAllNode(Connection con) {
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("START n=node(*) RETURN n.ArticleId");
while (rs.next()) {
System.out.println(rs.getString("n.ArticleId"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void createNodeRelation(Connection con,String ArticleId1,String ArticleId2,String RelationAttr) {
try{
Statement stmt = con.createStatement();
Boolean flag = stmt.execute("MERGE (n:Article { ArticleId: '" + ArticleId1 + "') merge (m:Article { ArticleId:'" + ArticleId2 + "' }) CREATE (n)-[r:CITE {Type:'" + RelationAttr + "'}]->(m)");
if(flag == true){
System.out.println("RelationShip Create Success!");
}else{
System.out.println("RelationShip Create Fail!");
}
}catch(Exception e){
e.printStackTrace();
}
}
public void deleteNodeRelation(Connection con,String ArticleId1,String ArticleId2) {
try{
Statement stmt = con.createStatement();
Boolean flag = stmt.execute("MATCH (n:Article { ArticleId:'" + ArticleId1 + "' })-[r:CITE]->(m:Article { ArticleId:'" + ArticleId2 + "' }) DELETE r");
if(flag == true){
System.out.println("RelationShip Delete Success!");
}else{
System.out.println("RelationShip Delete Fail!");
}
}catch(Exception e){
e.printStackTrace();
}
}
public void searchBetweenNodeRelation(Connection con,String ArticleId1,String ArticleId2 ) {
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("MERGE (n:Article { ArticleId:'" + ArticleId1 + "' })-[r:CITE]->(m:Article { ArticleId:'" + ArticleId2 + "' }) RETURN r.Type");
while (rs.next()) {
System.out.println(rs.getString("r.Type"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void searchNodeByLabel(Connection con, String label) {
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("MATCH (n:"+ label +") RETURN n.ArticleId");
while (rs.next()) {
System.out.println(rs.getString("n.ArticleId"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void searchNodeByArticleId(Connection con, String ArticleId) {
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("MATCH (n:Article {ArticleId:'" + ArticleId + "'})-[r:CITE]->(m:Article) RETURN DISTINCT m.ArticleId");
while (rs.next()) {
System.out.println(rs.getString("m.ArticleId"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void searchNodeByLabelAndArticleId(Connection con,String ArticleId,String label) {
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("MATCH (n:"+ label + "{ArticleId:'" + ArticleId + "'})-[r:CITE]->(m:Article) RETURN DISTINCT m.ArticleId");
while (rs.next()) {
System.out.println(rs.getString("m.ArticleId"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}