首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot整合Neo4j

SpringBoot整合Neo4j

原创
作者头像
是小张啊喂
修改2021-07-22 18:09:11
1.1K0
修改2021-07-22 18:09:11
举报
文章被收录于专栏:软件软件

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

添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-neo4j</artifactId>
    </dependency>
</dependencies>

application.yml

spring:
  neo4j:
    # 连接地址
    uri: bolt://localhost:7687
    authentication:
      # neo4j 账号
      username: neo4j
      # neo4j 密码
      password: root

创建实体

@Node
@Data
public class Customer implements Serializable {

    @Id
    private Long id;

    private String name;
}

Neo4jRepository

/*
 * 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

@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

@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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档