目录结构
- 前言
- 设置neo4j外部访问
- 代码整理
- maven 依赖
- java 代码
- 参考链接
前言
公司需要获取neo4j数据库内容进行数据筛查,neo4j数据库咱也是头一次基础,辛辛苦苦安装好整理了安装neo4j的步骤,如今又遇到数据不知道怎么创建,关关难过关关过,前路漫漫亦灿灿,现调查整理如下:
设置neo4j外部访问
编辑安装目录“C:\Users\admin\Desktop\Neo4j\neo4j-community-5.8.0\conf\neo4j.conf”文件,大概在83行;
# Bolt connector
server.bolt.enabled=true
#server.bolt.tls_level=DISABLED
# 修改前...
# server.bolt.listen_address=:7687
# 修改后...
server.bolt.listen_address=0.0.0.0:7687
#server.bolt.advertised_address=:7687
# HTTP Connector. There can be zero or one HTTP connectors.
server.http.enabled=true
# 修改前...
# server.http.listen_address=:7474
# 修改后...
server.http.listen_address=0.0.0.0:7474
#server.http.advertised_address=:7474
代码整理
maven 依赖
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>4.2.0</version>
</dependency>
<!-- 此demo中以下依赖可以不加,但在项目中需要加以下依赖,否则加载驱动时加载不成功 -->
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>3.3.4</version>
</dependency>
java 代码
import org.apache.commons.collections4.MapUtils;
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.Driver;
import org.neo4j.driver.GraphDatabase;
import org.neo4j.driver.Session;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Kaixuan {
private static final Integer DATA_SIZE = 20;
private static List<Map<String, Object>> generateData() {
List<Map<String, Object>> datas = new ArrayList<>(DATA_SIZE);
Map<String, Object> tmpMap = null;
for (int i = 0; i < DATA_SIZE; i++) {
tmpMap = new HashMap<>();
datas.add(tmpMap);
tmpMap.put("cardNum", i);
tmpMap.put("userName", "进击巨人" + i);
tmpMap.put("transferCardNum", (i + 1) % 20);
tmpMap.put("transferAmount", i);
}
return datas;
}
private static void inertNeo4jTest() {
// 构造数据, 数据和pg 库里面的数据一样
List<Map<String, Object>> datas = generateData();
Driver driver = GraphDatabase.driver("bolt://192.168.1.111:7687", AuthTokens.basic("neo4j", "123qweQWE"));
Session session = driver.session();
// 手动create to neo4j
String createCQLTemplate = "create (n:jinjijuren {cardNum: '$cardNum', userName: '$userName', transferCardNum: '$transferCardNum', transferAmount: '$transferAmount'})";
for (Map<String, Object> data : datas) {
String createCQL = createCQLTemplate.replace("$cardNum", MapUtils.getString(data, "cardNum"))
.replace("$userName", MapUtils.getString(data, "userName"))
.replace("$transferCardNum", MapUtils.getString(data, "transferCardNum"))
.replace("$transferAmount", MapUtils.getString(data, "transferAmount"));
session.run(createCQL);
}
// 手动维护关系
String mergeCQLTemplate = "match (a:jinjijuren{cardNum: '$cardNum1'}), (b:jinjijuren{cardNum: '$cardNum2'}) MERGE(a)-[:TRANSFER{transferAmount: '$transferAmount'}]->(b)";
datas.forEach(data -> {
String mergeCQL = mergeCQLTemplate.replace("$cardNum1", MapUtils.getString(data, "cardNum"))
.replace("$cardNum2", MapUtils.getString(data, "transferCardNum"))
.replace("$transferAmount", MapUtils.getString(data, "transferAmount"));
session.run(mergeCQL);
});
// close resource
session.close();
driver.close();
}
public static void main(String[] args) {
inertNeo4jTest();
}
}
参考链接
- https://www.cnblogs.com/qlqwjy/p/14774488.html