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

SpringBoot整合Neo4j

作者头像
是小张啊喂
发布2021-08-10 11:34:45
4320
发布2021-08-10 11:34:45
举报
文章被收录于专栏:软件软件

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

添加依赖

代码语言:javascript
复制
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-neo4j</artifactId>
    </dependency>
</dependencies>

application.yml

代码语言:javascript
复制
spring:
  neo4j:
    # 连接地址
    uri: bolt://localhost:7687
    authentication:
      # neo4j 账号
      username: neo4j
      # neo4j 密码
      password: root

创建实体

代码语言:javascript
复制
@Node
@Data
public class Customer implements Serializable {

    @Id
    private Long id;

    private String name;
}

Neo4jRepository

代码语言:javascript
复制
/*
 * 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

代码语言:javascript
复制
@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

代码语言:javascript
复制
@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://cloud.tencent.com/developer/support-plan?invite_code=3q26l8mdrjc48

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档