前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot整合Neo4j

SpringBoot整合Neo4j

原创
作者头像
是小张啊喂
修改于 2021-07-22 10:09:11
修改于 2021-07-22 10:09:11
1.2K00
代码可运行
举报
文章被收录于专栏:软件软件
运行总次数:0
代码可运行

最近在看美团技术团队对图谱的应用文章,觉得现在图数据库其实应用场景还是挺多的,推荐:https://tech.meituan.com/2021/07/15/construction-and-application-of-lifestyle-general-needs-net.html

添加依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-neo4j</artifactId>
    </dependency>
</dependencies>

application.yml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  neo4j:
    # 连接地址
    uri: bolt://localhost:7687
    authentication:
      # neo4j 账号
      username: neo4j
      # neo4j 密码
      password: root

创建实体

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Node
@Data
public class Customer implements Serializable {

    @Id
    private Long id;

    private String name;
}

Neo4jRepository

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*
 * CQL 参考 : https://www.w3cschool.cn/neo4j/
 */
public interface CustomerRepository extends Neo4jRepository<Customer, Long> {

    // MATCH (a:Customer{name:'张三'}) MATCH (b:Customer{name:'李四'}) CREATE (a) - [r:兄弟] -> (b) RETURN r
    @Query("MATCH (a:Customer{name:'张三'}) MATCH (b:Customer{name:'李四'}) CREATE (a) - [r:兄弟] -> (b)")
    void relevance();

    // MATCH (a:Customer{name:'张三'})-[r]-(b:Customer{name:'李四'}) DELETE a,b,r

    // MATCH (n:Customer{name:'张三'})  return n
    // MATCH (n:Customer) WHERE n.name = '张三' return n

    // MATCH (n:Customer) WHERE n.name <> '张' and  n.id <> 1 return n

    // MATCH (c:Customer{name:'张三'}) - [r] -(cc:Customer{name:'李四'}) DELETE r

    // MATCH (c:Customer{name:'张三'}) REMOVE c.id

    // MATCh (c:Customer{name:'张三'}) set c.name = '张三1'

}

Neo4jServiceImplp

代码语言:java
AI代码解释
复制
@Service
public class CustomerServiceImpl implements CustomerService {

    @Autowired
    CustomerRepository customerRepository;

    /**
     * 查询 neo4j 所有节点
     *
     * @return
     */
    @Override
    public List<Customer> select() {
        // 查询全部
        List<Customer> all = customerRepository.findAll();

        // 按条件查询
        // List<Customer> all = customerRepository.findAll(Example.of(new Customer()));
        return all;
    }

    /**
     * 创建客户
     *
     * @return
     */
    @Override
    public String create() {
        List<Customer> customerList = new ArrayList<>();
        Customer customer = new Customer();
        customer.setId(new Long(1));
        customer.setName("张三");
        Customer customer2 = new Customer();
        customer2.setId(new Long(2));
        customer2.setName("李四");
        customerList.add(customer);
        customerList.add(customer2);
        customerList.forEach(customer1 -> {
            customerRepository.save(customer1);
        });
        return "创建成功";
    }

    /**
     * 创建关联关系
     *
     * @return
     */
    @Override
    public String relevance() {
        customerRepository.relevance();
        return "创建关联关系成功";
    }

    /**
     * 删除
     *
     * @return
     */
    @Override
    public String delete() {
        customerRepository.deleteAll();
        return "删除成功";
    }

}

Controller

代码语言:java
AI代码解释
复制
@RestController
@Slf4j
public class CustomerController {

    @Autowired
    CustomerService customerService;

    /**
     * 查询 neo4j 所有节点
     *
     * @return
     */
    @GetMapping("select")
    public List<Customer> select(){
        return customerService.select();
    }

    /**
     * 创建节点
     *
     * @return
     */
    @GetMapping("create")
    public Object create(){
        return customerService.create();
    }

    /**
     * 关联节点间的关系
     *
     * @return
     */
    @GetMapping("relevance")
    public String relevance(){
        return customerService.relevance();
    }

    /**
     * 删除节点
     *
     * @return
     */
    @GetMapping("delete")
    public String delete(){
        return customerService.delete();
    }

}

学习没有捷径可以走,希望能一直坚持

喜欢编程的,请关注我的博客https://www.lzmvlog.top/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入浅出Joern(三)Joern和Neo4j常用语法大全
在研究Joern和Neo4j的过程中,我遇到了一个相当大的问题,就是由于我对OverflowDB包括scala和cypher语言都不熟。Joern和Neo4j分别支持这几种冷门语言,而相应的文档其实没有解决我的问题。
LoRexxar
2023/10/17
1.4K0
深入浅出Joern(三)Joern和Neo4j常用语法大全
Java操作Neo4J就是这么简单!
前几天阿粉给大家扩展了关于 Neo4J 图谱数据库的内容,今天阿粉教给大家如何使用 Java 来操作 Neo4j 数据库。
Java极客技术
2022/12/04
2.1K0
Java操作Neo4J就是这么简单!
SpringBoot+Neo4j在社交电商中,讲述你是怎么被绑定为下线的
社交电商中,现在做的比较出色的就应该属于花生日记,以及最近比较火的芬香。或许你经常会收到朋友或者亲戚发来的分享出的商品,而当你点击这些分享出来的商品后,那么,恭喜你,你可能已经被绑定为下级(粉丝)了。当然,我们这里只是举例说明下。
码农小胖哥
2020/02/24
7480
SpringBoot+Neo4j在社交电商中,讲述你是怎么被绑定为下线的
Neo4J:spring-boot-starter-data-neo4j简单应用
http://localhost:8080/person/addPerson/qiang
程裕强
2019/10/24
2.5K0
SpringBoot使用Neo4j
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
dalaoyang
2020/11/15
1.8K0
史上最全面的Neo4j使用指南「建议收藏」
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
全栈程序员站长
2022/09/18
46.5K1
史上最全面的Neo4j使用指南「建议收藏」
第一个Springboot Neo4j代码
pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-neo4j</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </
算法之名
2020/10/28
5240
第一个Springboot Neo4j代码
Neo4j 系列(1) —— 初识 Neo4j
图数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是以图论为基础的,图数据库主要用于存储更多的连接数据
求和小熊猫
2021/12/06
3.1K0
springboot整合neo4j
Neo4j支持三种网络协议(Protocol),分别是Bolt,HTTP和HTTPS,默认的连接器配置有三种,为了使用这三个端口,需要在Windows防火墙中创建Inbound Rules,允许通过端口7687,7474和7473访问本机。
smallmayi
2022/05/12
7350
Neo4j入门
Neo4j是一个开源的图形数据库管理系统,它基于Java语言开发。与传统的关系型数据库不同,Neo4j使用图形结构来存储和查询数据,这使得它在处理复杂关系时更加高效和灵活。
半月无霜
2023/05/11
1.6K0
Neo4j入门
neo4j相关操作
添加节点 create (n:Person {name:'张三',age:12}) n表示别名,Person表示一个标签,{}里面的是Person的属性 添加关系 create (p:Person{name:'张三',age:12})-[:包工程{金额:1000}]->(n:Person{name:'李四',age:14}) 删除节点 create (n:Person{name:'test'}) match (n:Person{name:'test'}) delete n 需要注意的是如果该节点与其它节
西西嘛呦
2021/11/15
3010
neo4j相关操作
Neo4J超详细专题教程,快来收藏起来吧
  随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系 网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长, 急需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。 世界上很多著名的公司都在使用图数据库,比如:
用户4919348
2022/11/22
5.3K0
Neo4J超详细专题教程,快来收藏起来吧
Neo4j导入CSV文件使用import
数据连接:https://pan.baidu.com/s/1hwMy91DjohZ9yJXcA6GKMQ
学到老
2019/01/25
9.3K4
Neo4j导入CSV文件使用import
neo4j 开发记录
如果不设置密码,那么默认密码是 neo4j/neo4j 而,不需要验证,则是配置--env NEO4J_AUTH=none
用针戳左手中指指头
2021/12/06
1.1K0
Neo4j的查询语法笔记(二)
cypher是neo4j官网提供的声明式查询语言,非常强大,用它可以完成任意的图谱里面的查询过滤,我们知识图谱的一期项目 基本开发完毕,后面会陆续总结学习一下neo4j相关的知识。今天接着上篇文章来看下neo4j的cpyher查询的一些基本概念和语法。 一,Node语法 在cypher里面通过用一对小括号()表示一个节点,它在cypher里面查询形式如下: 1,() 代表匹配任意一个节点 2, (node1) 代表匹配任意一个节点,并给它起了一个别名 3, (:Lable) 代表查询一个类型的数据 4, (
我是攻城师
2018/05/14
5K0
neo4j的CQL基础学习进阶
WHERE 字句 简单WHERE子句语法: WHERE <condition> 示例: 查询客户姓名为张三的节点 第一种写法: MATCH (n:Customer{name:'张三'}) return n 第二种写法: MATCH (n:Customer) WHERE n.name = '张三' return n 复杂WHERE子句语法: WHERE <condition> <boolean-operator> <condition> <condition>语法: <property-name> <com
是小张啊喂
2021/06/03
6300
快速初步了解Neo4j与使用
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
Dream城堡
2018/09/10
1.8K0
快速初步了解Neo4j与使用
Neo4j 之 Cypher 笔记
Cypher 是 Neo4j 提出的图查询语言,是一种声明式的图数据库查询语言,如同关系数据库中的 SQL,它拥有精简的语法和强大的表现力,能够精准且高效地对图数据进行查询和更新。
EmoryHuang
2022/10/31
1.4K0
neo4j官方开发文档阅读记录
neo-4j由两部分组成:relationship,label和property,label或者relationship中包含property,label与label之间形成关系.
DuncanZhou
2018/09/04
1.7K0
图数据库neo4j(三)python 连接neo4j,实现增删改查
基于上面的操作,再次定义node1[‘age’] = 99,并执行graph.push(node1),发现已经更新
学到老
2019/01/25
6.5K0
相关推荐
深入浅出Joern(三)Joern和Neo4j常用语法大全
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验