!!!如果对内容有疑问请回复沟通
。



<profiles><profile><id>local</id><properties><spring.profiles.active>local</spring.profiles.active><docker.image.prefix>industrygraphbrowse</docker.image.prefix></properties><activation><!-- 设置默认激活这个配置 --><activeByDefault>true</activeByDefault></activation></profile></profiles><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--neo4j主要用到这个配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.0.1-jre</version></dependency></dependencies>
#日志存储地址logging:level:com.abcft.industrygraphbrowse.service: infofile: "logs/service.log"#服务器配置server:port: 18071tomcat.uri-encoding: UTF-8spring:application:name: industrygraphbrowseprofiles:active: "@spring.profiles.active@"mvc:async:request-timeout: 200000
spring:data:neo4j:uri: bolt://localhost:7687username: neo4jpassword: 123456
创建如下目录,大家比较熟悉的结构controller,model,service,以及dao层

model层 也就是neo4j 节点以及关系的定义,我们先创建一个简单的node(节点),后续文章会涉及复杂的节点以及关系相互操作@NodeEntity注解表示该类是neo4j的一个节点;@Id表示neo4j里的id;neo4j里默认会创建一个自增的id,在官网和一些书籍里都不建议使用他,他是Long型 自增的,并且在我删除原来的节点后 他可能还会创建一个相同的id出现,所以不建议使用,这里我们自己创建一个uuid来作为主键,但是这个主键并不会创建索引,如果需要索引,需要我们自己创建,后续文章有索引的创建。本章是基础篇,不涉及。
@NodeEntity(label = "CompanyEntry")@Datapublic class CompanyEntryNode {@Idprivate String uuid;/*** 名称*/private String name;/*** 公司表id*/private String companyId;/*** 类型*/private String type;/*** 别名*/private String aliasName;/*** 行业*/private String industry;/*** 经营范围*/private String scope;/*** 简介*/private String introduction;/*** 图片路径*/private String imagePath;/*** 状态 0草稿 1已审核*/private String status;/*** 修改人Id*/private String modifyUserId;/*** 修改时间*/private Long modifyTime;/*** 创建人Id*/private String createUserId;/*** 创建时间*/private Long createTime;
dao层和我们mybatis很像 定义一个类 继承 Neo4jRepository<T,E>,这里的E就是你的主键id的类型;Neo4jRepository<T,E> 这里默认有很多实现对neo4j的操作,比如save,delete,find等,大家自行查看
接口里我们定义了一个existsByCompanyId的方法注解是@Query;里边内容就涉及到Cypher语法,我们在后续文章中详细讲解,这里就只需要理解根据companyId查询CompanyEntry的名字
@Repositorypublic interface CompanyEntryRepository extends Neo4jRepository<CompanyEntryNode, String> {/*** 根据公司id判断 公司是否已经存在** @param companyId* @return*/@Query("match(n:CompanyEntry{companyId:{companyId}}) return n.name")String existsByCompanyId(String companyId);}
service层我们开始定义查询和保存接口
public interface CompanyEntryService {/*** 获取所有数据** @return*/List<CompanyEntryNode> getAll();}
@Service@Slf4jpublic class CompanyEntryServiceImpl implements CompanyEntryService {@Autowiredprivate CompanyEntryRepository companyEntryRepository;/*** 获取所有数据** @return*/@Overridepublic List<CompanyEntryNode> getAll() {Iterable<CompanyEntryNode> all = companyEntryRepository.findAll();List<CompanyEntryNode> companyEntryNodes = Lists.newArrayList(all);return companyEntryNodes;}}
controller层 这里的WebResInfo 是我自己定义的返回结果类,大家可以自己
@RestController@RequestMapping(value = "companyEntry")@Slf4jpublic class CompanyEntryController {@Autowiredprivate CompanyEntryService companyEntryService;/*** 获取公司词条** @return*/@GetMapping(value = "getAll")public WebResInfo getAll() {log.info("getAll->companyEntry");WebResInfo webResInfo = new WebResInfo();try {webResInfo.setCode(WebResCode.Successful);List<CompanyEntryNode> all = companyEntryService.getAll();webResInfo.setData(all);} catch (Exception e) {log.error("getAll error:{}", e);webResInfo.setCode(WebResCode.Server_Bug_Exception);webResInfo.setMessage(e.getMessage());}return webResInfo;}}
最后请求返回结果,如果你跑出来下边结果,恭喜你完成了第一步(大家data里应该没有数据,因为我这里已经插入数据了)

谢谢 如果疑问请留言 点赞!!!
文章转载自Neo4j权威指南,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




