springBoot 集成Neo4j 实战演示,今天分享一下:
JDK11环境下
1、pom文件
<!-- 1. 继承Spring Boot Starter Parent -->
<!-- 这是Spring Boot Maven项目的标准方式,它提供了默认的依赖管理和插件配置 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- 从仓库查找父pom,不本地查找 -->
</parent>
<!-- 这些依赖的版本由spring-boot-starter-parent统一管理,通常无需显式指定版本 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2、yml配置
datasource:
host: localhost
port: 7687
username: neo4j
password: 123456
management:
endpoint:
health:
show-details: always
logging:
level:
org.neo4j.ogm.drivers.bolt.request: DEBUG
org.springframework.data.neo4j: DEBUG
3、代码核心配置
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories;
@EnableNeo4jRepositories("ru.vladigeras.springneo4j.repository")
@EntityScan(basePackages = "ru.vladigeras.springneo4j.model")
@Configuration
public class Neo4jConfiguration {
@Value("${datasource.host}")
private String host;
@Value("${datasource.port}")
private String port;
@Value("${datasource.username}")
private String username;
@Value("${datasource.password}")
private String password;
@Bean
public org.neo4j.ogm.config.Configuration configuration() {
return new org.neo4j.ogm.config.Configuration.Builder()
.uri("bolt://" + host + ":" + port)
.credentials(username, password)
.build();
}
}
4、查询接口配置和实现
@Repository
public interface LineRepository extends Neo4jRepository<LineNode, Long> {
}
#业务接口
List<LineNode> getLines();
#实现
@Transactional(readOnly = true)
@Override
public List<LineNode> getLines() {
List<LineNode> result = new ArrayList<>();
Iterator<LineNode> iterator = lineRepository.findAll().iterator();
iterator.forEachRemaining(result::add);
return result;
}
#控制侧
@ApiOperation("GetLines")
@GetMapping("/lines")
@ResponseStatus(HttpStatus.OK)
public List<Line> getLines() {
return stationService.getLines()
.stream()
.map(StationMapper::of)
.collect(Collectors.toList());
}
#实体
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(description = "Line info")
public class Line {
@ApiModelProperty("identifier")
private Long id;
@ApiModelProperty("line name")
private String name;
public Long getId() {
return id;
}
public Line setId(Long id) {
this.id = id;
return this;
}
public String getName() {
return name;
}
public Line setName(String name) {
this.name = name;
return this;
}
}
5新增接口配置实现
#控制层
@ApiOperation("CreateLine")
@PostMapping("/lines")
@ResponseStatus(HttpStatus.CREATED)
public void add(@ApiParam("Line info")
@RequestBody NewLine line) {
stationService.save(line);
}
#vo
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(description = "Line info")
public class NewLine {
@ApiModelProperty("line name")
private String name;
public String getName() {
return name;
}
public NewLine setName(String name) {
this.name = name;
return this;
}
}
#接口
void save(NewLine line);
#接口实现
@Transactional
@Override
public void save(NewLine line) {
LineNode lineNode = new LineNode();
lineNode.setName(line.getName());
lineRepository.save(lineNode);
}
6、启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringNeo4jApplication {
public static void main(String[] args) {
SpringApplication.run(SpringNeo4jApplication.class, args);
}
}
启动成功就可以演示了。