Spring Cloud项目扩展(六)集成SpringData jpa

​springdata jpa使用起来比较简单,本篇将在项目集成。目的是为后面介绍elasticsearch的使用打下基础。下面直接开始。

1,以我们的example-service项目为例,首先引入jar包,lombok是非必须的。我们这里使用的mysql数据库。

Spring Cloud项目扩展(六)集成SpringData jpa

2,增加mysql和jpa配置。hibernate.hbm2ddl.auto 参数的作用主要用于:自动创建、更新、验证数据库表结构,有四个值。

Spring Cloud项目扩展(六)集成SpringData jpa

3,创建一个新的moudle,拥有存放一些公共的实体类。

Spring Cloud项目扩展(六)集成SpringData jpa

4,新创建的entity模块中引入jar包。

Spring Cloud项目扩展(六)集成SpringData jpa

5,在service模块中引入entity模块。在service的pom中加入如下代码。

Spring Cloud项目扩展(六)集成SpringData jpa

6,在entity中增加实体类。

Spring Cloud项目扩展(六)集成SpringData jpa

7,在service项目中创建dao包,并在包中创建一个接口集成JpaRepository

Spring Cloud项目扩展(六)集成SpringData jpa

Spring Cloud项目扩展(六)集成SpringData jpa

8,测试查看结果。

Spring Cloud项目扩展(六)集成SpringData jpa

Spring Cloud项目扩展(六)集成SpringData jpa

总结:jpa的集成很简单。其实JPA在这里遵循 Convention over configuration(约定大约配置)的原则,遵循 Spring 以及 JPQL 定义的方法命名。Spring提供了一套可以通过命名规则进行查询构建的机制。这套机制会把方法名首先过滤一些关键字,比如 find…By,read…By,query…By,count…By 和 get…By。系统会根据关键字将命名解析成 2 个子语句,第一个 By 是区分这两个子语句的关键词。这个 By 之前的子语句是查询子语句(指明返回要查询的对象),后面的部分是条件子语句。如果直接就是 findBy… 返回的就是定义 Respository 时指定的领域对象集合,同时 JPQL 中也定义了丰富的关键字:and、or、Between 等等。

9,自定义语句。使用Query注解并且在注解中使用nativeQuery=true,可以使用原生语句进行查询。

Spring Cloud项目扩展(六)集成SpringData jpa

也可以去掉nativeQuery=true,使用费原生sql进行查询。

Spring Cloud项目扩展(六)集成SpringData jpa

10,关联查询。

10.1,entity项目中增加Hero实体类。

Spring Cloud项目扩展(六)集成SpringData jpa

10.2,创建一个存放联合查询结果的实体类。记得一定要带上构造方法。

Spring Cloud项目扩展(六)集成SpringData jpa

10.3,MyBallRepository中增加如下查询方法。

Spring Cloud项目扩展(六)集成SpringData jpa

 

10.4,查看运行结果。

Spring Cloud项目扩展(六)集成SpringData jpa

Spring Cloud项目扩展(六)集成SpringData jpa

本篇简单介绍了jpa的使用。集成和简单使用都很简单。关键是要对JPQL熟悉,才能熟练运用。

关注公众号:直立行走的程序猿

公众号回复springcloud获得git的源码下载地址。

相关文章: