我是靠谱客的博主 冷傲酒窝,最近开发中收集的这篇文章主要介绍Spring Data自定义接口实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

引言

使用Spring Data自定义的Repository的实现方式最普遍的就是继承Spring的Repository

定义及使用方式一:

首先,因为Spring Data JPA的JpaRepository接口封装了一系列的增删改查,所以方便一般方式如下:

 public interface UserDao extends JpaRepository<User,Integer>{
}

然后,对于想使用自己定义的一些接口,那就再自行定义一些接口方法,如下:

 public interface UserDaoTask<T,ID>{
void method();
}

当然,这里既要实现JpaRepository又要实现自定义的接口,采用多继承的方式

public interface UserDao extends JpaRepository<User,Integer>,UserDaoTask<User,Integer>{
}

这个时候,在自己的Service层中就可以使用了,但这时候是空方法,必须自行实现.

 public class UserDaoImpl implements UserDaoTask{
public void method(){
System.out.println("Hello!");
}
}

PS:需要注意的是,因为要实现的是UserDaoTask接口里面的方法,但是命名却不能按照对应的写成UserDaoTaskImpl,如果要写成这个,回报以下错误:
No property method found for type Task!
那为什么呢,因为任何继承了Repository(JpaRepository最终也是继承于Repository)spring都会为他生成一个实现类,因为UserDao 继承于UserDaoTask,而UserDaoTask中的method不是spring data jpa规范查询方法的规则(具体规则下次再讲),如果就报找不到找不到属性了。
当然,你会问UserDaoTask不会有UserDaoTaskImpl实现类吗,按照spring的文档说的,只要配置好实现类的后缀名称就可以,也确实是这样.


<jpa:repositories
base-package="cn.edu.sdut.softlab.Repository"
query-lookup-strategy="create-if-not-found"
transaction-manager-ref="transactionManager"
entity-manager-factory-ref="entityManagerFactory"/>

Spring的实现规范的命名方式应该是继承于Repository接口的哪个命名+Impl.正如上所说,真正应该写的是UserDaoImpl而不是UserDaoTaskImpl.

最后

以上就是冷傲酒窝为你收集整理的Spring Data自定义接口实现的全部内容,希望文章能够帮你解决Spring Data自定义接口实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部