当在 Spring Data JPA 的特定规则下创建方法时,将创建调用相应查询的方法。
例如,
public interface CustomerJpaRepository implements JpaRepository<Customer, Long>{
public List<Customer> findByName(String name);
}
findByName() 生成类似于下面的查询。
select * from Customer where name = name;
我很好奇这个原理。准确地说,我对解析此方法并将其转换为查询的代码感到好奇。
我查看了实现JpaRepository 的SimpleJpaRepository 类的代码,但找不到任何线索。 (当然也有可能我没找到)。
综上所述,当在JpaRepository中声明了一个由特定词组成的方法时,我很好奇内部实际执行这个方法的代码。更具体地说,我想查看使此方法起作用的代码。
如果内部没有代码可以做到这一点(我个人怀疑这可能...),我想知道它是如何详细实现的,如果有说明原理或内部过程的链接或 Material ,请分享相关引用资料。
最佳答案
从spring-data repository方法名创建查询的解析逻辑目前主要声明在包org.springframework.data.repository.query.parser
中.
基本上,存储库方法名称字符串被解析为 PartTree
,其中包含 Part
s表示定义的抽象查询条件。
然后可以使用 PartTree
创建更具体的查询对象,例如用JpaQueryCreator
, 或 RedisQueryCreator
,取决于存储库的类型。
关于java - Spring Data JPA 的查询方法如何生成查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70449033/