当前位置: 首页 > news >正文

在网站的主页制作时 填写关键字国内做的好看的网站设计

在网站的主页制作时 填写关键字,国内做的好看的网站设计,玉环县建设局网站,芜湖市公司网站建设哪家好前言 图形数据库是专门用于存储图形数据的数据库#xff0c;它使用图形模型来存储数据#xff0c;并且支持复杂的图形查询。常见的图形数据库有Neo4j、OrientDB等。 Neo4j是用Java实现的开源NoSQL图数据库#xff0c;本篇博客介绍如何在SpringBoot中使用Neo4j图数据库… 前言 图形数据库是专门用于存储图形数据的数据库它使用图形模型来存储数据并且支持复杂的图形查询。常见的图形数据库有Neo4j、OrientDB等。 Neo4j是用Java实现的开源NoSQL图数据库本篇博客介绍如何在SpringBoot中使用Neo4j图数据库如何进行简单的增删改查以及如何进行复杂的查询。 本篇博客相关代码的git网址如下 https://gitee.com/pet365/spring-boot-neo4j 关于Neo4j的博客文章如下 图数据库Neo4j——Neo4j简介、数据结构 Docker版本的部署安装 Cypher语句的入门 目录 前言引出springBoot整合1、引入依赖2、配置文件3、实体类定义4、dao继承Neo4jRepository复杂查询最短路径查询最小成本查询 总结 引出 1.Neo4j是用Java实现的开源NoSQL图数据库; 2.SpringBoot使用Neo4j继承Neo4jRepository进行简单增删改查 3.使用Neo4jClient进行复杂的查询 springBoot整合 1、引入依赖 !-- neo4j的包--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-neo4j/artifactId/dependency2、配置文件 server:port: 9902 logging:level:org.springframework.data.neo4j: debug spring:application:name: spring-neo4jdata:neo4j:database: neo4jneo4j:authentication:username: neo4jpassword: neo4j123uri: neo4j://192.168.150.101:76873、实体类定义 提取抽象类 不同的节点类网点、一级转运中心、二级转运中心 4、dao继承Neo4jRepository 进行自定义查询 KeywordSampleCypher snippetAfterfindByLaunchDateAfter(Date date)n.launchDate dateBeforefindByLaunchDateBefore(Date date)n.launchDate dateContaining (String)findByNameContaining(String namePart)n.name CONTAINS namePartContaining (Collection)findByEmailAddressesContains(Collection addresses) findByEmailAddressesContains(String address)ANY(collectionFields IN [addresses] WHERE collectionFields in n.emailAddresses) ANY(collectionFields IN address WHERE collectionFields in n.emailAddresses)InfindByNameIn(Iterable names)n.name IN namesBetweenfindByScoreBetween(double min, double max) findByScoreBetween(Range range)n.score min AND n.score max Depending on the Range definition n.score min AND n.score max or n.score min AND n.score maxStartingWithfindByNameStartingWith(String nameStart)n.name STARTS WITH nameStartEndingWithfindByNameEndingWith(String nameEnd)n.name ENDS WITH nameEndExistsfindByNameExists()EXISTS(n.name)TruefindByActivatedIsTrue()n.activated trueFalsefindByActivatedIsFalse()NOT(n.activated true)IsfindByNameIs(String name)n.name nameNotNullfindByNameNotNull()NOT(n.name IS NULL)NullfindByNameNull()n.name IS NULLGreaterThanfindByScoreGreaterThan(double score)n.score scoreGreaterThanEqualfindByScoreGreaterThanEqual(double score)n.score scoreLessThanfindByScoreLessThan(double score)n.score scoreLessThanEqualfindByScoreLessThanEqual(double score)n.score scoreLikefindByNameLike(String name)n.name ~ nameNotLikefindByNameNotLike(String name)NOT(n.name ~ name)NearfindByLocationNear(Distance distance, Point point)distance( point(n),point({latitude:lat, longitude:lon}) ) distanceRegexfindByNameRegex(String regex)n.name ~ regexAndfindByNameAndDescription(String name, String description)n.name name AND n.description descriptionOrfindByNameOrDescription(String name, String description)n.name name OR n.description description (Cannot be used to OR nested properties) package com.tianju.mapper;import com.tianju.entity.AgencyEntity; import org.mapstruct.Mapper; import org.springframework.data.neo4j.repository.Neo4jRepository;/*** 网点的mapper比如菜鸟驿站*/ Mapper public interface AgencyMapper extends Neo4jRepositoryAgencyEntity,Long {/*** 根据bid 查询* param bid 业务id* return 网点数据*/AgencyEntity findByBid(Long bid);/*** 根据bid删除** param bid 业务id* return 删除的数据条数*/Long deleteByBid(Long bid); } 复杂查询 最短路径查询 //查询两个网点之间最短路径查询深度最大为10 MATCH path shortestPath((n:AGENCY) -[*..10]-(m:AGENCY))WHERE n.name 北京市昌平区定泗路 AND m.name 上海市浦东新区南汇RETURN pathpackage com.tianju.mapper.impl;import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.db.meta.Column; import com.tianju.dto.OrganDTO; import com.tianju.dto.TransportLineNodeDTO; import com.tianju.entity.AgencyEntity; import com.tianju.enums.OrganTypeEnum; import com.tianju.mapper.TransportLineRepository; import org.neo4j.driver.internal.InternalPoint2D; import org.neo4j.driver.types.Path; import org.neo4j.driver.types.Relationship; import org.springframework.data.neo4j.core.schema.Node; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.core.Neo4jClient; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component;import java.util.Map; import java.util.Optional;Component public class TransportLineRepositoryImpl implements TransportLineRepository {Autowiredprivate Neo4jClient neo4jClient;/*** 查询最短路线* param start 开始网点* param end 结束网点* return*/Overridepublic TransportLineNodeDTO findShortestPath(AgencyEntity start, AgencyEntity end) {// 获取网点数据在Neo4j中的类型 Node(AGENCY) Node(OLT)String type AgencyEntity.class.getAnnotation(Node.class).value()[0];// 构造Sql语句 $startId // String cql MATCH path shortestPath((n:AGENCY) -[*..10]-(m:AGENCY))\n // WHERE n.bid $startId AND m.bid $endId\n // RETURN path;String cql StrUtil.format(MATCH path shortestPath((n:{}) -[*..10]-(m:{})) WHERE n.bid $startId AND m.bid $endId RETURN path,type,type);// 执行自定义查询Neo4jClient.RecordFetchSpecTransportLineNodeDTO recordFetchSpec neo4jClient.query(cql).bind(start.getBid()).to(startId) // 替换 $startId.bind(end.getBid()).to(endId) // 替换 $endId.fetchAs(TransportLineNodeDTO.class) // 设置响应类型指定为 TransportLineNodeDTO 类型.mappedBy((typeSystem, record) - { // 设置结果集映射Path path record.get(0).asPath();// 得到第一条路线TransportLineNodeDTO transportLineNodeDTO new TransportLineNodeDTO();path.nodes().forEach(node - { // 将每个节点信息封装成一个 OrganDto// 获得节点的 键值对 address: 上海市转运中心bid8002MapString, Object map node.asMap();// {name北京市昌平区定泗路,// locationPoint{srid4326, x116.37212849638287, y40.11765281246394},// address北七家镇定泗路苍龙街交叉口, bid100280, phone010-86392987}System.out.println(map: map);// 把键值对转换成对象 OrganDTOOrganDTO organDTO BeanUtil.toBeanIgnoreError(map, OrganDTO.class);// organDTO:// OrganDTO(id100280, name北京市昌平区定泗路, typenull, phone010-86392987,// address北七家镇定泗路苍龙街交叉口, latitudenull, longitudenull)// type,latitude,longitude 没有映射成功System.out.println(organDTO: organDTO);// 获得标签的名称 OLT,TLT,String first CollUtil.getFirst(node.labels());// 根据OLT获得枚举类型 OLT(1, 一级转运中心),OrganTypeEnum organTypeEnum OrganTypeEnum.valueOf(first);// 再获得枚举类型的 code 1、2、3organDTO.setType(organTypeEnum.getCode()); // 设置类型的映射// 经纬度 location: point({srid:4326, x:121.59815370294322, y:31.132409729356993})InternalPoint2D location MapUtil.get(map, location, InternalPoint2D.class); // 经纬度 BeanUtil.getProperty(map.get(location),x);organDTO.setLatitude(location.x()); // 设置经纬度映射organDTO.setLongitude(location.y()); // 经纬度映射// OrganDTO(id100280, name北京市昌平区定泗路, type3,// phone010-86392987, address北七家镇定泗路苍龙街交叉口,// latitude116.37212849638287, longitude40.11765281246394)System.out.println(organDTO: organDTO);transportLineNodeDTO.getNodeList().add(organDTO);});System.out.println(transportLineNodeDTO: transportLineNodeDTO);path.relationships().forEach(relationship - {// 路径下面的关系MapString, Object map relationship.asMap();Double cost MapUtil.get(map, cost, Double.class);transportLineNodeDTO.setCost(cost transportLineNodeDTO.getCost());});System.out.println(transportLineNodeDTO: transportLineNodeDTO);return transportLineNodeDTO;});OptionalTransportLineNodeDTO one recordFetchSpec.one(); // Optional1.8提供的可以处理null的情况return one.orElse(null); // 如果为null就返回null如果不是null就返回结果} }最小成本查询 package com.tianju.mapper.impl;import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.db.meta.Column; import com.tianju.dto.OrganDTO; import com.tianju.dto.TransportLineNodeDTO; import com.tianju.entity.AgencyEntity; import com.tianju.enums.OrganTypeEnum; import com.tianju.mapper.TransportLineRepository; import org.neo4j.driver.internal.InternalPoint2D; import org.neo4j.driver.types.Path; import org.neo4j.driver.types.Relationship; import org.springframework.data.neo4j.core.schema.Node; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.core.Neo4jClient; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component;import java.util.Map; import java.util.Optional;Component public class TransportLineRepositoryImpl implements TransportLineRepository {Autowiredprivate Neo4jClient neo4jClient;Overridepublic TransportLineNodeDTO findCostLeastPath(AgencyEntity start, AgencyEntity end) {String type AgencyEntity.class.getAnnotation(Node.class).value()[0];String cqlB MATCH path (n:{}) -[*..10]-(m:{}) WHERE n.bid $startId AND m.bid $endId UNWIND relationships(path) AS r WITH sum(r.cost) AS cost, path RETURN path ORDER BY cost ASC, LENGTH(path) ASC LIMIT 1;String cql StrUtil.format(cqlB, type,type);OptionalTransportLineNodeDTO one neo4jClient.query(cql).bind(start.getBid()).to(startId).bind(end.getBid()).to(endId).fetchAs(TransportLineNodeDTO.class).mappedBy(((typeSystem, record) - {Path path record.get(0).asPath();TransportLineNodeDTO transportLineNodeDTO new TransportLineNodeDTO();path.nodes().forEach(node - {MapString, Object map node.asMap();OrganDTO organDTO BeanUtil.toBeanIgnoreError(map, OrganDTO.class);// 获得标签的名称 OLT,TLT,String first CollUtil.getFirst(node.labels());// 根据OLT获得枚举类型 OLT(1, 一级转运中心),OrganTypeEnum organTypeEnum OrganTypeEnum.valueOf(first);// 再获得枚举类型的 code 1、2、3organDTO.setType(organTypeEnum.getCode()); // 设置类型的映射// 经纬度 location: point({srid:4326, x:121.59815370294322, y:31.132409729356993})InternalPoint2D location MapUtil.get(map, location, InternalPoint2D.class); // 经纬度 BeanUtil.getProperty(map.get(location),x);organDTO.setLatitude(location.x()); // 设置经纬度映射organDTO.setLongitude(location.y()); // 经纬度映射transportLineNodeDTO.getNodeList().add(organDTO);});path.relationships().forEach(relationship - {// 路径下面的关系MapString, Object map relationship.asMap();Double cost MapUtil.get(map, cost, Double.class);transportLineNodeDTO.setCost(cost transportLineNodeDTO.getCost());});return transportLineNodeDTO;})).one();return one.orElse(null);}private void findShortestPathMy(){String cql MATCH path shortestPath((n:AGENCY) -[*..10]-(m:AGENCY)) WHERE n.bid 210127 AND m.bid 100260 RETURN path;// 执行自定义查询Neo4jClient.UnboundRunnableSpec query neo4jClient.query(cql);ThreadPoolTaskExecutor threadPoolTaskExecutor new ThreadPoolTaskExecutor();} }总结 1.Neo4j是用Java实现的开源NoSQL图数据库; 2.SpringBoot使用Neo4j继承Neo4jRepository进行简单增删改查 3.使用Neo4jClient进行复杂的查询
http://www.w-s-a.com/news/872060/

相关文章:

  • wordpress 版权声明网站优化排名哪家性价比高
  • dedecms网站关键词外包做网站平台 一分钟
  • 酒网站建设游戏分类网站怎么做
  • 仿牌网站安全北京大良网站建设
  • ps中怎样做网站轮播图片吉林省网站建设公司
  • 广西网站建设-好发信息网温江做网站哪家好
  • 网站建设属于什么职位类别南京哪个网站建设比较好
  • wdcp 网站备份东莞网站建设五金建材
  • 天津制作网站的公司电话wordpress架设进出销
  • tomcat做静态网站prestashop和wordpress
  • 上海响应式建站wap网站微信分享代码
  • 四川建筑人才招聘网南昌网站优化
  • 南充网站建设制作重庆有的设计网站大全
  • 深圳沙井做网站公司网站搭建谷歌seo
  • 学校资源网站的建设方案山西省住房城乡建设厅网站
  • 医疗行业网站建设深圳网络科技公司排名
  • 企业形象型网站建设wordpress chess
  • 网站的域名起什么好处罗湖网站建设公司乐云seo
  • 网站的服务器在哪里sem推广软件选哪家
  • 科技网站欣赏婚庆公司经营范围
  • 网站后台管理系统php校园网站建设意见表填写
  • 网站建设问题调查常州百度推广代理公司
  • net网站开发学习谷歌优化培训
  • 企业网站公众号广东网站建设方便
  • 2008r2网站建设张店网站建设方案
  • 企业网站首页学生做的网站成品
  • 网站开发 架构设计企业信息管理系统的组成不包括
  • 网站维护模式网页传奇游戏平台排行
  • 企业网站改自适应蛋糕方案网站建设
  • 网站开发技术职责网站升级中html