暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Springboot+Neo4j 初级增删改查(二)

Neo4j权威指南 2021-03-17
988
上一篇文章 Springboot+Neo4j 初级框架搭建(一) 我们完成了系统的搭建,这篇文章我们来谈谈Neo4j的增删改查基本操作。
在dao层我们继承了Neo4jRepository<T,ID>,这里其实已经帮我们实现了大部分对Neo4j数据库的操作,查看源码中Neo4jRepository<T,ID>继承PagingAndSortingRepository<T,ID>CrudRepository<T,ID>PagingAndSortingRepository<T,ID> 主要是实现了分页和排序的功能,CrudRepository<T,ID>主要实现基础的增删改查
    @NoRepositoryBean
    public interface CrudRepository<T, ID> extends Repository<T, ID> {
    <S extends T> S save(S var1);

    <S extends T> Iterable<S> saveAll(Iterable<S> var1);

    Optional<T> findById(ID var1);

    boolean existsById(ID var1);

    Iterable<T> findAll();

    Iterable<T> findAllById(Iterable<ID> var1);

    long count();

    void deleteById(ID var1);

    void delete(T var1);

    void deleteAll(Iterable<? extends T> var1);

    void deleteAll();
    }

    @NoRepositoryBean
    public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {
    Iterable<T> findAll(Sort var1);

    Page<T> findAll(Pageable var1);
    }
    上边列举了很多,包括添加或者修改的类save(),查询用到的findAll(),以及删除用到的deleteById()等等。
    我们还是以公司为例子,对公司进行增删改查操作,我们只需要创建CompanyEntryRepository类
      @Repository
      public interface CompanyEntryRepository extends Neo4jRepository<CompanyEntryNodeString{
      }
      基于上边的接口我们只需要在service里定义我们的接口然后实现就好了我们先创建一个
        public interface CompanyEntryService {
        /**
        * 获取所有数据
        *
        * @return
        */
        List<CompanyEntryNode> getAll();

        /**
        * 修改
        * @param companyEntryNode
        */
        void modifyCompanyEntry(CompanyEntryNode companyEntryNode);

        /**
        * 删除
        * @param companyId
        */
        void deleteById(String companyId);

        /**
        * 查询
        * @param companyId
        * @return
        */
        CompanyEntryNode findById(String companyId);
        }
        创建companyEntryService的实现companyEntryServiceImpl
          @Service
          @Slf4j
          public class CompanyEntryServiceImpl implements CompanyEntryService {

          @Autowired
          private CompanyEntryRepository companyEntryRepository;

          /**
          * 获取所有数据
          *
          * @return
          */
          @Override
          public List<CompanyEntryNode> getAll() {
          Iterable<CompanyEntryNode> all = companyEntryRepository.findAll();
          List<CompanyEntryNode> companyEntryNodes = Lists.newArrayList(all);
          return companyEntryNodes;
          }

          /**
          * 修改
          *
          * @param companyEntryNode
          */
          @Override
          public void modifyCompanyEntry(CompanyEntryNode companyEntryNode) {
          if(StringUtils.isEmpty(companyEntryNode.getUuid())){
          companyEntryNode.setUuid(UUID.randomUUID().toString());
          }
          companyEntryRepository.save(companyEntryNode);
          }

          /**
          * 删除
          *
          * @param companyId
          */
          @Override
          public void deleteById(String companyId) {
          companyEntryRepository.deleteById(companyId);
          }

          /**
          * 查询
          *
          * @param companyId
          * @return
          */
          @Override
          public CompanyEntryNode findById(String companyId) {
          Optional<CompanyEntryNode> byId = companyEntryRepository.findById(companyId);
          if (byId.isPresent()) {
          return byId.get();
          }
          return new CompanyEntryNode();
          }
          }
          controller实现数据调用 
            @RestController
            @RequestMapping(value = "companyEntry")
            @Slf4j
            public class CompanyEntryController {

            @Autowired
            private CompanyEntryService companyEntryService;
            /**
            * 获取公司词条
            *
            * @return
            */
            @PostMapping(value = "save")
            public WebResInfo save(@RequestBody CompanyEntryNode companyEntryNode) {
            log.info("save->companyEntryNode{}", companyEntryNode);
            WebResInfo webResInfo = new WebResInfo();
            try {
            webResInfo.setCode(WebResCode.Successful);
            companyEntryService.modifyCompanyEntry(companyEntryNode);
            } catch (Exception e) {
            log.error("save error:{}", e);
            webResInfo.setCode(WebResCode.Server_Bug_Exception);
            webResInfo.setMessage(e.getMessage());
            }
            return webResInfo;
            }
            然后我们通过postman简单构建几个插入数据看下

            通过查询数据库可以看到数据库里已经有了该数据

            其他接口就不一一实现了,其实理论都是一样的,其实是我懒!
            下章我们讨论下节点与关系的操作!
            文章转载自Neo4j权威指南,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论