我是Spring Boot的新手,所以我有几个基本问题。
当我们定义一个扩展JpaRepostory的Repostory接口时
@Repository
public interface UserInfoRepository extends JpaRepository<UserInfo, Long> {
Optional<UserInfo> findByEmail(String email);
List<UserInfo> findAllByEmail(String email);
}
这些方法可以从 Service 类调用(我们可能甚至不需要提及这两个方法)。到目前为止,一切都很好。
问题:
>
方法findByEmail
是如何定义的?它在幕后是如何被称为的?
如果我们想用原生SQL添加一个自定义方法< code>findUserAction呢?在这种情况下,我们需要在< code > interface UserInfoRepository 中声明它,并在< code > UserInfoRepositoryImpl 类中定义它。在这种情况下,我们不需要定义其他现有的方法吗?
任何帮助都将不胜感激。提前感谢!:)
Spring Data允许您定义查询方法的方式有多种。根据您必须完成的工作量(以及您获得的灵活性)排序:
>
预定义方法。根据您选择作为存储库基础的接口,您可以免费获得一堆方法:在接口中声明的方法。你有 CrudRepository
、PagingAndSortingRepository、JpaRepository
、QueryByExampleExecutor 和 JpaSpecificationExecutor
作为选择。 这些接口的方法在属于 Spring Data 的类中实现。例如
在 SimpleJpaRepository
中。
查询派生。在这里,您可以html" target="_blank">声明一个具有特定命名方案的方法。Spring Data将解析方法名,构造一个查询,绑定参数并执行它。查询是使用Jpa Criteria API创建的。
查询注释/命名查询。您可以通过添加@Query
批注、在实体上声明命名查询或将其放入属性文件中来自己提供查询。Spring Data将找到它并执行它。它还将添加漂亮的东西以添加分页,如果您选择使用这些参数,它将通过 SpEL 处理您的参数。
最后,您可以提供自己的实现,在这里您可以做Java允许您做的事情:使用< code>EntityManager或< code>JdbcTemplate查询数据库,根本不访问数据库,而是做一些完全不同的事情。
总的来说,整个过程是这样的:如果要注入一个存储库,Spring Data会创建一个代理,实现存储库中声明的所有方法。在代理中,Spring Data将分析方法调用,决定上述哪种情况适用并执行它。实际上,决定使用什么过程是在启动时完成的,但这不应该影响对它的理解。
实现方法的所有这些策略都是相互独立的,因此您可以为存储库中的每个方法使用不同的策略。
为了测试它,我创建了一个新的控制器,以避免干扰我正在工作的控制器TesteController2,它运行良好。因此,我的下一步是扩展IStudentRepository中的ICustomRepository,在TesteController2中进行更改,然后Spring将不再找到我的findCustom方法,它尝试将该方法创建为JPA关键字并返回和错误。这是我的存储库接口: 和TesteContr
我读到了Crudrepository,这是一个接口,用于在特定类型的存储库上进行通用CRUD操作。 但是我们可以创建我们的自定义接口并扩展CrudRepository。
本文向大家介绍Android APP使用自定义字体实现方法,包括了Android APP使用自定义字体实现方法的使用技巧和注意事项,需要的朋友参考一下 android系统内置字体 android 系统本身内置了一些字体,可以在程序中使用,并且支持在xml配置textView的时候进行修改字体的样式。支持字段为android:textStyle ,android:typeface, android:
本文向大家介绍C#自定义签名章实现方法,包括了C#自定义签名章实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#自定义签名章实现方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍thinkPHP自定义类实现方法详解,包括了thinkPHP自定义类实现方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了thinkPHP自定义类实现方法。分享给大家供大家参考,具体如下: 1.通过Model调用 没有继承Model,否则会因为表不存在而报错。 调用, 调用确实方便,但是总感觉有点不合理。这个D毕竟是操作数据库的。 2.通过引入类实现,把类放到ORG下
本文向大家介绍Android自定义dialog简单实现方法,包括了Android自定义dialog简单实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android自定义dialog简单实现方法。分享给大家供大家参考,具体如下: 更多关于Android开发相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》 希望本文所述对大家Android程序设计有所帮助。