基本环境
此demo依赖的spring-boot版本为:2.1.12.RELEASE
运行环境:
JDK:1.8及以上
neo4j:3.5.5版本,4.0版本要求必须jdk11了
项目管理:maven
添加依赖
<dependency>
application.properties 配置如下:
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=0000
spring.data.neo4j.uri=http://127.0.0.1:7474
实体定义
movie实体的定义如下
package
@NodeEntity:声明该类为Neo4j的节点类
movie的仓库类定义
package com.example.neo4j.neo4jdemo.repository;
import com.example.neo4j.neo4jdemo.entity.Movie;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
* @date 2020/1/21 3:55 PM
**/
public interface MovieRepository extends Neo4jRepository<Movie,Long> {
/**
* CQL语法
* @param name
* @return
*/
@Query("match (p:person{person_name:{name}})-[a:ACTED_IN]->(m:movie) return m")
public List<Movie> findByPerson(@Param("name") String name);
@Query("match (p:person{person_name:{name}})-[a:ACTED_IN]->(m:movie) return count(m) as count")
public Integer findCountByPerson(@Param("name") String name);
@Query("create (m:movie{id:{id},movie_id:{movieId},movie_title:{movieTitle},movie_introduction:{movieIntroduction}}) return m")
public Movie saveMovie(@Param("id") Long id, @Param("movieTitle") String movieTitle, @Param("movieId") String movieId, @Param("movieIntroduction") String movieIntroduction);
}
controller类定义
这里的demo省了service层,controller直接操作了repository层,进行movie实体的CRUD
package com.example.neo4j.neo4jdemo.controller;
import com.example.neo4j.neo4jdemo.entity.Movie;
import com.example.neo4j.neo4jdemo.repository.MovieRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* Spring Mvc的根路径、健康检查等。
*/
@RestController
public class MainController {
@Autowired
MovieRepository movieRepository;
@GetMapping("/movie/{movieId}")
public Movie findMovie(@PathVariable("movieId") Long movieId){
return movieRepository.findById(movieId).orElse(null);
}
@GetMapping("/movie/save/{id}")
public Movie findMovie(@PathVariable("id")Long id,@RequestParam("movieId") String movieId,@RequestParam("movieId") String movieTitle){
Movie moviet = movieRepository.saveMovie(id,movieTitle,movieId,movieTitle);
return movieRepository.findById(id).orElse(null);
}
@GetMapping("/movie/author/{name}")
public List<Movie> findMovieByPerson(@PathVariable("name") String name){
return movieRepository.findByPerson(name);
}
@GetMapping("/movie/count/{name}")
public Integer findMovieCountByPerson(@PathVariable("name") String name){
return movieRepository.findCountByPerson(name);
}
}
demo效果
以上配置完毕,启动时可以看到以下结果
访问http://localhost:8080/movie/39
结果返回
访问 http://localhost:8080/movie/author/%E5%91%A8%E6%98%9F%E9%A9%B0 ,结果返回如下
以上代码库https://gitee.com/seeeyoume/neo4j-demo 需要可以clone看下