springBoot 集成Neo4j 实战演示
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: localhostport: 7687username: neo4jpassword: 123456management:endpoint:health:show-details: alwayslogging:level:org.neo4j.ogm.drivers.bolt.request: DEBUGorg.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;@Beanpublic 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)@Overridepublic 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);}#voimport 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@Overridepublic 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);}}
启动成功就可以演示了。