Spring Data JPA 的查询方法如何生成查询语句?

4
当在Spring Data JPA的特定规则下创建一个方法时,会创建一个调用相应查询的方法。
例如,
public interface CustomerJpaRepository implements JpaRepository<Customer, Long>{

    public List<Customer> findByName(String name);
}

findByName() 会生成类似下面的查询语句。

select * from Customer where name = name;

我对这个原理很好奇,确切地说,我对解析该方法并将其转换为查询的代码很感兴趣。

我查看了实现JpaRepositorySimpleJpaRepository类的代码,但没有找到任何线索。(当然,我也有可能没有找到)

总之,当在JpaRepository中声明由特定单词组成的方法时,我想知道实际执行此方法的代码。 更具体地说,我想看看使此方法起作用的代码。

如果没有内部执行此操作的代码(我个人怀疑不可能...),我想了解详细的实现方式,如果有解释这个原理或内部过程的链接或材料,请分享相关参考资料。


1
请参见 https://dev59.com/ksHqa4cB1Zd3GeqP0HfJ - Jens Schauder
@JensSchauder 谢谢您的额外解释 :) - doljae
2个回答

6

谢谢!我会查看你评论中的链接 :) - doljae

-1

我建议您查看这个Query Creation Spring文档,它解释了方法如何转换为查询的规则。


谢谢。实际上我已经阅读了这篇文章,我正在寻找使查询方法工作的代码。 - doljae
这些文档只告诉我们如何使用它,但没有展示它在幕后是如何实现的。 - Tạ Anh Tú
我认为春天将在运行时使用反射根据方法名创建查询,这是参考链接:https://www.linkedin.com/pulse/java-reflection-api-how-spring-uses-shivangam-soni/ - Tạ Anh Tú

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接