简介

Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。

安装

下载后解压目录:
在这里插入图片描述

配置环境:

在这里插入图片描述在这里插入图片描述

cmd启动neo4j: neo4j.bat console

注意:如果jdk环境是1.8,请下载3.x的neo4j

在这里插入图片描述

Springboot整合Neo4j:

  • 导入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>`在这里插入代码片`
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • 配置文件:
spring.data.neo4j.uri=http://localhost:7474
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=123456
  • 主启动类
@SpringBootApplication
@EnableNeo4jRepositories(basePackages ="com.yang.springboot.dao")
@EntityScan(basePackages = "com.yang.springboot.pojo")
public class Springboot05Neo4jApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot05Neo4jApplication.class, args);
    }
}
  • 创建节点类:
@NodeEntity(label = "User") //表示节点类型 存入neo4j数据库中
public class UserNode {
    @Id
    @GeneratedValue
    private Long nodeId;
    @Property
    private String userId;
    @Property
    private String name;

    public Long getNodeId() {
        return nodeId;
    }

    public void setNodeId(Long nodeId) {
        this.nodeId = nodeId;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
  • 创建dao层仓库类
@Component
public interface UserRepository extends Neo4jRepository<UserNode,Long> {
    /**
     * 获取用户节点集合
     * @return
     */
    @Query("MATCH (n:User) RETURN n ")
    List<UserNode> getUserNodeList();

    /**
     * 通过名字添加用户节点
     * @param name
     * @return
     */
    @Query("create (n:User{name:{name}}) RETURN n")
    List<UserNode> addUserNodeList(@Param("name") String name);
}
  • service层
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
    //添加用户节点
    public void addUserNode(UserNode userNode){
        userRepository.addUserNodeList(userNode.getName());
    }
    //保存节点
    public void saveNode(UserNode userNode){
        userRepository.save(userNode);
    }
}
  • controller层:
@Controller
public class Neo4jController {
    @Autowired
    private UserService userService;

    @RequestMapping("/saveUser")
    @ResponseBody
    public String saveUser(){
        UserNode userNode=new UserNode();
        //userNode.setNodeId(1l);
        userNode.setUserId("123456");
        userNode.setName("杨立虎");

        //userService.addUserNode(userNode);
        userService.saveNode(userNode);
        return "success";
    }
}

最后可以在网页中输入Cypher查询语句获得图形化关系图
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。