Neo4J实例(2)

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();
		} 
			
	}

}

 

转载于:https://my.oschina.net/Tsher2015/blog/759369

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值