From 025cd22107eee87d455b209f2862eb3814dea0dc Mon Sep 17 00:00:00 2001
From: "Yangkai.Shen" <237497819@qq.com>
Date: Tue, 25 Dec 2018 15:12:14 +0800
Subject: [PATCH] =?UTF-8?q?:sparkles:=20spring-boot-demo-neo4j=20=E5=AE=8C?=
=?UTF-8?q?=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
spring-boot-demo-neo4j/README.md | 323 ++++++++++++++++++
.../image-20181225150513101-5721513.png | Bin 0 -> 543297 bytes
2 files changed, 323 insertions(+)
create mode 100644 spring-boot-demo-neo4j/assets/image-20181225150513101-5721513.png
diff --git a/spring-boot-demo-neo4j/README.md b/spring-boot-demo-neo4j/README.md
index 26931d3..b1d82c3 100644
--- a/spring-boot-demo-neo4j/README.md
+++ b/spring-boot-demo-neo4j/README.md
@@ -12,5 +12,328 @@
4. 启动容器:`docker start neo4j-3.5.0`
5. 浏览器 http://localhost:7474/ 访问 neo4j 管理后台,初始账号/密码 neo4j/neo4j,会要求修改初始化密码,我们修改为 neo4j/admin
+## pom.xml
+```xml
+
+
+ 4.0.0
+ spring-boot-demo-neo4j
+ 1.0.0-SNAPSHOT
+ jar
+
+ spring-boot-demo-neo4j
+ Demo project for Spring Boot
+
+
+ com.xkcoding
+ spring-boot-demo
+ 1.0.0-SNAPSHOT
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-neo4j
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+ cn.hutool
+ hutool-all
+
+
+
+ com.google.guava
+ guava
+
+
+
+
+ spring-boot-demo-neo4j
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+```
+
+## application.yml
+
+```yaml
+spring:
+ data:
+ neo4j:
+ uri: bolt://localhost
+ username: neo4j
+ password: admin
+ open-in-view: false
+```
+
+## CustomIdStrategy.java
+
+```java
+/**
+ *
+ * 自定义主键策略
+ *
+ *
+ * @package: com.xkcoding.neo4j.config
+ * @description: 自定义主键策略
+ * @author: yangkai.shen
+ * @date: Created in 2018-12-24 14:40
+ * @copyright: Copyright (c) 2018
+ * @version: V1.0
+ * @modified: yangkai.shen
+ */
+public class CustomIdStrategy implements IdStrategy {
+ @Override
+ public Object generateId(Object o) {
+ return IdUtil.fastUUID();
+ }
+}
+```
+
+## 部分Model代码
+
+### Student.java
+
+```java
+/**
+ *
+ * 学生节点
+ *
+ *
+ * @package: com.xkcoding.neo4j.model
+ * @description: 学生节点
+ * @author: yangkai.shen
+ * @date: Created in 2018-12-24 14:38
+ * @copyright: Copyright (c) 2018
+ * @version: V1.0
+ * @modified: yangkai.shen
+ */
+@Data
+@NoArgsConstructor
+@RequiredArgsConstructor(staticName = "of")
+@AllArgsConstructor
+@Builder
+@NodeEntity
+public class Student {
+ /**
+ * 主键,自定义主键策略,使用UUID生成
+ */
+ @Id
+ @GeneratedValue(strategy = CustomIdStrategy.class)
+ private String id;
+
+ /**
+ * 学生姓名
+ */
+ @NonNull
+ private String name;
+
+ /**
+ * 学生选的所有课程
+ */
+ @Relationship(NeoConsts.R_LESSON_OF_STUDENT)
+ @NonNull
+ private List lessons;
+
+ /**
+ * 学生所在班级
+ */
+ @Relationship(NeoConsts.R_STUDENT_OF_CLASS)
+ @NonNull
+ private Class clazz;
+
+}
+```
+
+## 部分Repository代码
+
+### StudentRepository.java
+
+```java
+/**
+ *
+ * 学生节点Repository
+ *
+ *
+ * @package: com.xkcoding.neo4j.repository
+ * @description: 学生节点Repository
+ * @author: yangkai.shen
+ * @date: Created in 2018-12-24 15:05
+ * @copyright: Copyright (c) 2018
+ * @version: V1.0
+ * @modified: yangkai.shen
+ */
+public interface StudentRepository extends Neo4jRepository {
+ /**
+ * 根据名称查找学生
+ *
+ * @param name 姓名
+ * @param depth 深度
+ * @return 学生信息
+ */
+ Optional findByName(String name, @Depth int depth);
+
+ /**
+ * 根据班级查询班级人数
+ *
+ * @param className 班级名称
+ * @return 班级人数
+ */
+ @Query("MATCH (s:Student)-[r:R_STUDENT_OF_CLASS]->(c:Class{name:{className}}) return count(s)")
+ Long countByClassName(@Param("className") String className);
+
+
+ /**
+ * 查询满足 (学生)-[选课关系]-(课程)-[选课关系]-(学生) 关系的 同学
+ *
+ * @return 返回同学关系
+ */
+ @Query("match (s:Student)-[:R_LESSON_OF_STUDENT]->(l:Lesson)<-[:R_LESSON_OF_STUDENT]-(:Student) with l.name as lessonName,collect(distinct s) as students return lessonName,students")
+ List findByClassmateGroupByLesson();
+
+ /**
+ * 查询师生关系,(学生)-[班级学生关系]-(班级)-[班主任关系]-(教师)
+ *
+ * @return 返回师生关系
+ */
+ @Query("match (s:Student)-[:R_STUDENT_OF_CLASS]->(:Class)-[:R_BOSS_OF_CLASS]->(t:Teacher) with t.name as teacherName,collect(distinct s) as students return teacherName,students")
+ List findTeacherStudentByClass();
+
+ /**
+ * 查询师生关系,(学生)-[选课关系]-(课程)-[任教老师关系]-(教师)
+ *
+ * @return 返回师生关系
+ */
+ @Query("match ((s:Student)-[:R_LESSON_OF_STUDENT]->(:Lesson)-[:R_TEACHER_OF_LESSON]->(t:Teacher))with t.name as teacherName,collect(distinct s) as students return teacherName,students")
+ List findTeacherStudentByLesson();
+}
+```
+
+## Neo4jTest.java
+
+```java
+/**
+ *
+ * 测试Neo4j
+ *
+ *
+ * @package: com.xkcoding.neo4j
+ * @description: 测试Neo4j
+ * @author: yangkai.shen
+ * @date: Created in 2018-12-24 15:17
+ * @copyright: Copyright (c) 2018
+ * @version: V1.0
+ * @modified: yangkai.shen
+ */
+@Slf4j
+public class Neo4jTest extends SpringBootDemoNeo4jApplicationTests {
+ @Autowired
+ private NeoService neoService;
+
+ /**
+ * 测试保存
+ */
+ @Test
+ public void testSave() {
+ neoService.initData();
+ }
+
+ /**
+ * 测试删除
+ */
+ @Test
+ public void testDelete() {
+ neoService.delete();
+ }
+
+ /**
+ * 测试查询 鸣人 学了哪些课程
+ */
+ @Test
+ public void testFindLessonsByStudent() {
+ // 深度为1,则课程的任教老师的属性为null
+ // 深度为2,则会把课程的任教老师的属性赋值
+ List lessons = neoService.findLessonsFromStudent("漩涡鸣人", 2);
+
+ lessons.forEach(lesson -> log.info("【lesson】= {}", JSONUtil.toJsonStr(lesson)));
+ }
+
+ /**
+ * 测试查询班级人数
+ */
+ @Test
+ public void testCountStudent() {
+ Long all = neoService.studentCount(null);
+ log.info("【全校人数】= {}", all);
+ Long seven = neoService.studentCount("第七班");
+ log.info("【第七班人数】= {}", seven);
+ }
+
+ /**
+ * 测试根据课程查询同学关系
+ */
+ @Test
+ public void testFindClassmates() {
+ Map> classmates = neoService.findClassmatesGroupByLesson();
+ classmates.forEach((k, v) -> log.info("因为一起上了【{}】这门课,成为同学关系的有:{}", k, JSONUtil.toJsonStr(v.stream()
+ .map(Student::getName)
+ .collect(Collectors.toList()))));
+ }
+
+ /**
+ * 查询所有师生关系,包括班主任/学生,任课老师/学生
+ */
+ @Test
+ public void testFindTeacherStudent() {
+ Map> teacherStudent = neoService.findTeacherStudent();
+ teacherStudent.forEach((k, v) -> log.info("【{}】教的学生有 {}", k, JSONUtil.toJsonStr(v.stream()
+ .map(Student::getName)
+ .collect(Collectors.toList()))));
+ }
+}
+```
+
+## 截图
+
+运行测试类之后,可以通过访问 http://localhost:7474 ,查看neo里所有节点和关系
+
+![image-20181225150513101](assets/image-20181225150513101-5721513.png)
+
+
+
+## 参考
+
+- spring-data-neo4j 官方文档:https://docs.spring.io/spring-data/neo4j/docs/5.1.2.RELEASE/reference/html/
+- neo4j 官方文档:https://neo4j.com/docs/getting-started/3.5/
\ No newline at end of file
diff --git a/spring-boot-demo-neo4j/assets/image-20181225150513101-5721513.png b/spring-boot-demo-neo4j/assets/image-20181225150513101-5721513.png
new file mode 100644
index 0000000000000000000000000000000000000000..9c3d4dea1e406c1c1fafc77048fa26f97beab0b2
GIT binary patch
literal 543297
zcmbSzcQl*-`!`x0ROwK=s=E|L?OCd-YP2M=LQykD)gFmztJ*4BYHwO`5CZrOuXrgt(+o9naa&-CvPt7ya&ghFJh3n!RAoWG1#`&Qrf?
ze({3ISD(^nT66kr#mni`iGV{z8S-342p0EzwN8dB
znEY>9i;5k6wZKjx$gt%;QsJ{b!gq?xw(zWDktgE<_l#@1ek=6Ih6K~EyB7`PIbQj)
z_m_X%8UCz8zy8zxY^W*AtJ8clm$2_|yi#DBd9u6P7soro9NvNQFFR~bQtW7*wdb_+
zkq{LL|1j69GSP8ZE_i6MNj|Tow(>0J!}BL6+fr@D-RBLWfwufV>tZ^F6y8%rV3HRK
zRzw~YUe-1#8@VVu*RELN@akk~$}64=9HqB@o{6a);*C_3(G#o><6Y&dFtz-p-&+j6
z`ZfH9ivq;H@7&D07xAAO3B_)|TTNhb+xh3KTU|L0^}l>p{&|>p|La$H6kpDT55~44
zgm;Oz@cN&CqtE27T{c+x9QpW5=BLSHwjo(prA<1c^*dv@k_Wyi
zV%OGv!k-QfP8Wq;d2jLdtnVgQw2_*W!%d#hJGU*f~8gv(1<32|DTvSm8{midCwkNA^$
zZv-#7ueq&;;reCHygL5;lE8`3hzBwimjSX@LZO#$GKXkfJ-RvVlLa>ux%rxgZ#4H=
zV<|H!*M@UfPf7jUy~O{!ev)lKw6&z_{Q3!(pNH#R;idESd8zdLC=OXE{z%*R3Ar-Q
zbx+-RcP8iknfp3pM>!jgtn&_q|CkS@&%m^L4(tv6A1_>0xnz08`;5E(ImxfkSWfm&
z$HCoNZ?6+OP+rZXOGP{vKOWbF{fdcw1vg4&=Xvql?-6=_}hR3NpQU<(_UMaG+j~%
z&;Lp*n)zAnzMkVgo7%;8W`*8*(65jEN|wWCn79{y+-T!XJOY_wB5yEFTw;3r>cySY
zKSQs6K9<)Y8ZiZn59NC%XUf#3!D@P%@XDp+j4QM95BCzzyKfq&j_z<tH1}DVPezN7>s*yGj6~0Jc7+R|sr}L@`qy
zLIm{32ZbY!(-JR^>rA&Q2uuDT&giYX1RtMxo6&%pqHd_|v4MyfUG
z{KJn|HXeq3lkQdOmFSh~wSOwVsA?ABdT;xZ&gZ_?vzwYPuLa!Ly}2vBdotivwq9xO
zj`7S*mbS-j(rv&;VsmG6Q=~Npaz>1g6zcX1F0r_9qrU_u2Zqzk_4L{wwHrcS$D2a1
zz&L^xqTHN{R_oq!Hn@A*OCoEc;LQ#c4Mv!qRu%$ugWTgSB(DPj&DX;Nn=}_$I90el3FaA$69K;_7oaij|RPc@pI-(DOUceN$UB)={MluMMn2+hY%)Sd*_i<8y2~krm$G()_1Ct%wmI`$q|(&Q
zvtx#@{d1GUTq)c%-xM037yl%lt-Ujz6n_M`4QvInBeqS)(Rt={b4N2&rF;2md1(os
zhs
Eh{<
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 |