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 0000000..9c3d4de
Binary files /dev/null and b/spring-boot-demo-neo4j/assets/image-20181225150513101-5721513.png differ