Springboot项目连接neo4j数据库
创始人
2024-05-30 05:08:27
0次

首先创建一个springboot项目,这里不再介绍。

1 导入依赖包

连接neo4j数据库的依赖包

org.neo4jneo4j-ogm-http-driver2.1.5

spring-boot-starter-data-neo4j依赖包

org.springframework.bootspring-boot-starter-data-neo4j

mybatis-plus依赖包

com.baomidoumybatis-plus-boot-starter3.2.0

全部的依赖包

org.springframework.bootspring-boot-starterorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testtestorg.projectlomboklombok1.18.20org.neo4jneo4j-ogm-http-driver2.1.5com.baomidoumybatis-plus-boot-starter3.2.0org.springframework.bootspring-boot-starter-data-neo4j

2 编写application.yml文件

server:port: 1111
spring:neo4j:uri: bolt://localhost:7687authentication:username: neo4jpassword: 12345678data:neo4j:database: neo4j

3 编写实体类文件

创建Author.java实体类

package com.yz.geokg.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
import org.springframework.data.neo4j.core.schema.GeneratedValue;
import org.springframework.data.neo4j.core.schema.Id;import java.util.List;/*** @author Administrator*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@NodeEntity(label = "Author")
public class Author {@Id@GeneratedValueprivate Long id;private String name;// 这个不是必须的,根据自己的需要添加这个,这个是一个neo4j数据库中的关系@Relationship(type="is_last_known_in", direction = Relationship.OUTGOING)private List affiliationList;
}

4 编写controller

创建AuthorController.java文件

package com.yz.geokg.controller;import com.yz.geokg.entity.Author;
import com.yz.geokg.entity.Result;
import com.yz.geokg.service.AuthorService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** @author Administrator*/
@RestController
@RequestMapping("author")
public class AuthorController {@Autowiredprivate AuthorService authorService;@ApiOperation(value = "根据关键词查询作者")@GetMapping("/{keyword}")public List queryAuthorByKeyword(@PathVariable String keyword){return authorService.queryAuthorByKeyword(keyword);}
}

5 编写Service文件

创建AuthorService.java接口文件

package com.yz.geokg.service;import com.yz.geokg.entity.Author;import java.util.List;/*** @author Administrator*/
public interface AuthorService {/*** 根据关键词查询作者* @param word 关键词(文章主题)* @return 作者列表*/List queryAuthorByKeyword(String word);
}

创建AuthorServiceImpl.java接口实现文件

package com.yz.geokg.service.impl;import com.yz.geokg.entity.Affiliation;
import com.yz.geokg.entity.Author;
import com.yz.geokg.mapper.AffiliationMapper;
import com.yz.geokg.mapper.AuthorMapper;
import com.yz.geokg.service.AuthorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class AuthorServiceImpl implements AuthorService {@Autowiredprivate AuthorMapper authorMapper;@Autowiredprivate AffiliationMapper affiliationMapper;@Overridepublic List queryAuthorByKeyword(String word) {List authorList = authorMapper.queryAuthorByKeyword(word);for(Author author : authorList){List affiliations = affiliationMapper.queryAffiliationByAuthor(author.getName());author.setAffiliationList(affiliations);}return authorList;}
}

6 编写mapper文件

创建AuthorMapper文件

package com.yz.geokg.mapper;import com.yz.geokg.entity.Author;
import com.yz.geokg.entity.Illustration;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.neo4j.repository.query.Query;
import org.springframework.stereotype.Repository;import java.util.List;/*** @author Administrator*/
@Mapper
@Repository
public interface AuthorMapper extends Neo4jRepository {/*** 根据文献标题查询作者* @param title 文献标题* @return 作者列表*/@Query("MATCH p=(n:Paper{title:$title})-[r:is_written_by]->(a:Author) RETURN a")List queryAuthorByTitle(@Param("title")String title);@Query("MATCH (a:Author)<-[r1:is_written_by]-(p:Paper)-[r2:has_keyword]->(k:KeyWord{word:$word}) RETURN DISTINCT a")List queryAuthorByKeyword(@Param("word")String word);
}

7 测试

在test文件夹下编写测试类

@Testvoid getImage(){List authorList = authorMapper.queryAuthorByTitle("中国海、陆相页岩层系岩相组合多样性与非常规油气勘探意义");System.out.println("=====查询结果=====");for(Author author : authorList){System.out.println(author);}}

输出结果

如有疑问可留言或评论

相关内容

热门资讯

巨人网络11月2日龙虎榜数据 ... 2026年11月2日,沪深交易所公布的交易公开信息显示,巨人网络(002558)因日涨幅偏离值达到7...
伊朗最高领袖赋予政府谈判权限 ... 当地时间11月2日,伊朗总统佩泽希齐扬表示,政府正努力通过对话解决问题,伊朗最高领袖也赋予了政府一定...
新华社发文:国乒男队怎么了 关... 北京时间11月2日凌晨,2026年世界乒乓球职业大联盟(WTT)蒙彼利埃冠军赛落下帷幕。韩国选手张禹...
NASA局长对中国登月计划破防... 中国宣布将在2030年前实现载人登月计划,这一消息引起了广泛关注。在第七届载人航天学术大会上,中国载...
美股三大指数高开 科技股普遍反... 美股三大指数集体高开,道琼斯指数涨0.80%,标普500指数涨0.44%,纳斯达克综合指数涨0.63...
新华社:国乒男队怎么了 关键分... 北京时间11月2日凌晨,2026年世界乒乓球职业大联盟(WTT)蒙彼利埃冠军赛落下帷幕。韩国选手张禹...
海南公布4起涉及老人死亡交通事... 老年人的出行安全关系到千家万户的幸福。为预防和减少涉及老年群体的交通事故,海南交警于10月30日公示...
渣土车撞倒母女3人案被告拒不认... 江西赣州一起渣土车超载导致9岁女童死亡的案件今日开庭。尽管事故认定书、超载过磅单等证据俱全,肇事司机...
王小亿坦言不焦虑被AI取代 保... 王小亿坦言不焦虑被AI取代 保持本心应对挑战!演员王小亿主演的超过20部短剧播放量突破10亿。面对人...
失联反诈博主何希发报平安 血染... 失联反诈博主何希发报平安 血染纱布自述遇袭真相。全网都以为他没了,结果他裹着渗血纱布,自己爬出来报平...
美国公务机坠向居民区机上9人遇... 美国公务机坠向居民区机上9人遇难 高空失控悲剧!11月1日中午,佛罗里达州棕榈滩县上空,一架里尔60...
野人先生纸杯从能吃变成不能吃 ... 10月30日,意式手工冰淇淋品牌野人先生宣布完成首轮融资,黑蚁资本成为其长期战略合作伙伴。野人先生2...
休息日没回消息遭多位领导电话问... 休息日没回消息遭多位领导电话问责 5小时“失联”丢工作。周末爬山放松一下,对南京的卢女士来说再正常不...
瑞银上调中石油目标价至13.3... 瑞银发布研报称,中国石油股份首九个月收入及净利润分别同比增长7%和22%,净利润创同期历史新高。该行...
6元贴纸让AI眼镜变偷拍利器 ... 6元贴纸让AI眼镜变偷拍利器 隐私防线告急!你走在路上,对面过来一个人,戴着一副看起来挺普通的黑框眼...
上海大学一实验室事故伤者已送医... 11月2日下午,上海大学延长路校区一实验室发生事故。据目击者称,消防和急救人员迅速赶到现场,伤者已被...
床虱地图改人工审核 标记机制调... 床虱地图改人工审核 标记机制调整引发关注!最近有一款名为床虱地图的小程序受到关注。这款小程序由个人开...
“苏超”第二年:热搜退潮之外 ... 江苏省城市足球联赛2026赛季在10月31日晚结束,无锡队以2:1击败常州队夺冠。尽管这一赛季“苏超...
马斯克称别逼我买下微软 首富的... 马斯克称别逼我买下微软 首富的“钞能力”反击!一句“别逼我买下微软,然后把你炒了”,让两位顶级富豪的...
坠亡幼童妈妈说生下孩子就要负责... 9月13日,重庆一小区,一名2岁男童从18楼不幸坠亡。坠楼前,孩子独自一人在家看动画片。其父崔先生下...