springboot2.2使用neo4j
第一次更新先放一些代码进来,下次加注释
1.引入相应的包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
2.配置neo4j
spring.data.neo4j.uri=bolt://localhost:7687
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=admin
@Bean
public org.neo4j.ogm.config.Configuration getConfiguration(){
org.neo4j.ogm.config.Configuration configuration = new org.neo4j.ogm.config.Configuration.Builder()
.uri(environment.getProperty("spring.data.neo4j.uri"))
.connectionPoolSize(100)
.credentials(environment.getProperty("spring.data.neo4j.username"), environment.getProperty("spring.data.neo4j.password"))
.withBasePackages("com.distribute.order.repository")
.build();
return configuration;
}
@Bean
public SessionFactory sessionFactory(){
return new SessionFactory(getConfiguration());
}
@Bean("neo4jTransaction")
public Neo4jTransactionManager neo4jTransactionManager(SessionFactory sessionFactory){
return new Neo4jTransactionManager(sessionFactory);
}
3.配置接口
public interface CommonRepository extends Neo4jRepository{
@Query(" create(n:Person{name:'bob',born:'1990',location:'sjz'}) ")
void addNode();
@Query(" match(n) detach delete n ")
void deleteAll();
@Query(" match(n:Person{name:{0}}) return n ")
List<Map<String,Object>> findPerson(String name);
@Query(" create(movies:Movie{name:'starWars',released:'1990',title:'star wars'}) ")
void addNodeParent();
}
4.service层使用
@Autowired
private CommonRepository commonRepository;
@Override
@Transactional(value = "neo4jTransaction")
public Result addNode(Map<String, Object> params) throws Exception{
try{
commonRepository.addNode();
commonRepository.addNodeParent();
}catch(Exception e){
e.printStackTrace();
log.error("新增失败",e);
throw new RuntimeException("新增失败");
}
return new Result();
}
5.个人疑问
@Transactional(value = "transactionManager")默认事务管理器不会管理neo4j的事务
但是@Transactional(value = "neo4jTransaction"),使用neo4j的事务管理器,则可以同时管理mysql及neo4j的事务。但是没有查到什么资料,要是您知道,希望可以教教我