3.2 集成Spring Data JPA |
|
本节主要介绍如何在Spring Boot中集成Spring Data JPA、服务层类开发,如何通过Spring Data JPA实现基本的增删改查功能,以及自定义查询方法等内容。
在Spring Boot中集成Spring Data JPA,首先需要在pom.xml文件中引入所需的依赖,具体代码如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
在之前的章节中,我们已经在开发工具中安装好Maven Helper插件,所以大家可以通过该插件查看目前引入的所有依赖,如图3-2所示。
图3-2 my-spring-boot项目目录
在pom.xml文件中引入依赖之后,我们在目录/src/main/java/com.example.demo. repository下开发一个AyUserRepository类,如图3-3所示,具体代码如下:
图3-3 Maven Helper查看pom依赖包
与此同时,我们需要在AyUser实体类下添加@Entity和@Id注解,具体代码如下:
我们在my-spring-boot项目下继续开发服务层接口类和实现类:AyUserService和AyUserServiceImpl类,分别存放在目录/src/main/java/com.example.demo.service和/src /main/java/com.example.demo.service.impl下。具体代码如下:
接口类AyUserService定义了4个接口,findById和findAll用来查询单个和所有数据,delete用来删除数据,save同时具备保存和更新数据的功能。接口实现类AyUserServiceImpl的代码如下:
@Resource(name = “ayUserRepository”) private AyUserRepository ayUserRepository;
@Autowired @Qualifier(“ayUserRepository”) private AyUserRepository ayUserRepository;
前面已经在服务层类AyUserService开发完增删改查方法,这一节将继续在类中添加分页接口,具体代码如下:
分页方法定义好之后,在类AyUserServiceImpl中实现该方法,具体代码如下:
@Override public Page<AyUser> findAll(Pageable pageable) { return ayUserRepository.findAll(pageable); }
我们除了使用JpaRepository接口提供的增删改查分页等方法之外,还可以自定义查询方法。在AyUserRepository类中添加几个自定义查询方法,具体代码如下:
在AyUserRepository中自定义了3个查询的方法。从代码可以看出,Spring Data JPA为我们约定了一系列规范,只要按照规范编写代码,Spring Data JPA就会根据代码翻译成相关的SQL语句,进行数据库查询。比如可以使用findBy、Like、In等关键字,其中findBy可以用read、readBy、query、queryBy、get、getBy来代替。关于查询关键字的更多内容,大家可以到官方网站(https://docs.spring.io/spring-data/data-jpa/docs/ current/reference/html/)查看,里面有详细的内容介绍,这里就不一一列举了。
AyUserRepository类中的自定义查询方法开发完成之后,分别在类AyUserService和类AyUserServiceImpl中调用它们。
List<AyUser> findByName(String name); List<AyUser> findByNameLike(String name); List<AyUser> findByIdIn(Collection<String> ids);
AyUserService继续添加这3个方法,具体代码如下:AyUserServiceImpl类添加这3个方法,具体代码如下:
提示 @Override注解不可以去掉,它可以帮助我们校验接口方法是否被误改。