springboot+jdk1.8整合neo4j


springboot+jdk1.8整合neo4j


看了两天的neo4j,因为工作要用准备整合到自己项目里,踩了不少坑,记下笔记省的以后再用。
neo4j需要4.0版本以下的,因为4.0版本以上需要jdk11

springboot里面有集成的依赖,只要导入即可

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-neo4j</artifactId>
            <version>2.3.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.neo4j</groupId>
            <artifactId>neo4j-ogm-http-driver</artifactId>
            <version>3.2.1</version>
        </dependency>

配置application.properties(废弃):

org.neo4j.driver.uri=bolt://localhost:7687
org.neo4j.driver.authentication.username=neo4j
org.neo4j.driver.authentication.password=password

定义实体类:

@NodeEntity(label = "test")
@Data
public class TestNode {

    @Id
    private Long id;

    @Property("user_name")
    private String userName;
}
//@NodeEntity:声明该类为Neo4j的节点类

定义仓库

public interface TestRepository extends Neo4jRepository<TestNode,Long> {

    /**
     * CQL语法
     * @param id
     * @return
     */
    @Query("match (t:test{user_name:{id}})return t")
    public List<TestNode> findByCode(@Param("id") Long id);


    @Query("create (t:test{code:{id},user_name:{userName}}) return t")
    public TestNode saveTestee(@Param("id")Long id,@Param("userName")String userName);
}

定义service层

@Service
public class Neo4jService {

    @Autowired
    private TestRepository testRepository;

    public List<TestNode> findByCode(Long id){
        return testRepository.findByCode(id);
    }


    public TestNode saveTest(Long id,String userName){
        return testRepository.saveTest(id,userName);
    }

定义controller层调用

@RestController
@RequestMapping("/test")
public class TesteeKnowledgeController {

    private static final Logger log = LoggerFactory.getLogger(TesteeKnowledgeController.class);


    @Autowired
    private Neo4jService neo4jService;




    @GetMapping(path = "/getTest/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
    public List<TestNode> getTest(@PathVariable("id")Long id) {

    return neo4jService.findByCode(id);
    }

    @GetMapping(path = "/saveTestee", produces = MediaType.APPLICATION_JSON_VALUE)
    public TestNode saveTestee(@RequestParam("id")Long id,@RequestParam("name")String name) {

        return neo4jService.saveTestee(id,name);
    }
}

到这一步启动报错,TestRepository没有注入到bean里去,创建neo4j的配置文件,并把neo4j的连接信息写入到代码里(application.properties就不用了)

@Configuration
/**
*不要使用这个注解,不然spring会去找它下面的mapper.xml文件
*/
//@EnableNeo4jRepositories(basePackages = "com.example.domain.TestRepository")
@EnableTransactionManagement
class Neo4jTestConfig {


    @Bean
    public org.neo4j.ogm.config.Configuration configuration() {
        org.neo4j.ogm.config.Configuration configuration = new org.neo4j.ogm.config.Configuration.Builder()
                .uri("bolt://localhost:7687")
                .credentials("neo4j", "pwssword")
                .build();
        return configuration;
    }

    @Bean
    public Neo4jTransactionManager transactionManager() throws Exception {
        return new Neo4jTransactionManager(sessionFactory());
    }

    @Bean
    public SessionFactory sessionFactory() {
        return new SessionFactory(configuration(),"com.xlpg.domain");
    }

创建SessionFactory一定要传入configuration(),不然无效。
接下来启动调用
调用成功
差不多一步一坑,主要还是时间太短了,没有时间去仔细研究neo4j数据库

技术太差了,第一篇博客留给自己做纪念吧

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值