SpringBoot JPA实践之方法属性名查询

JPA
placeholder image
admin 发布于:2020-04-22 22:24:16
阅读:loading

在前一篇提到Spring JPA提供了众多方法,但往往在很多时候我们也都是直接使用最简洁方便的方式进行调用,本文称之它为简单查询,即:解析方法名称的特殊定义来实现方法查询,这API也是真的敢这么干,佩服佩服,再加上IDEA的强大提示,写起来真的是非常的方便,以至于我们需要在接口中编写自定义查询时,通过定义方法名实现,参考如下:

image.png

一般查询方法约定以query、find、get开头的规范,在输入上述开头时IDEA自动给出对应的方法提示,而后选择一项后继而提示Entity中的属性,再选择属性后弹出下一个查询条件的连接符,创建查询方法提示参考如下:

代码提示.gif

本文通过两个示例来体验一下这种所谓的简单查询,它提供了非常强大的匹配模式与逻辑,可满足多种场景的实际需要,示例分别是两个参数的等值查询与范围查询,范围查询给出使用Between and 与 like 的模糊搜索方式,比较简单,参考如下:

image.png

查询输出sql语句如下:

image.png


image.png

以上两种查询体验到了它的便捷性,其实究其实现原理肯定是接口代理实现与动态方法名的解析,至于它提供的OR、Exist、Not NULL等本例不再给出,探讨一下个人认为它的优缺点:

优点

(1)完整的方法命名规范性校验,Spring Boot启动时会检查所有JPA Repository定义的方法,如果符合这种简单查询时分析这个方法的合法性校验,如果不符合规范直接启动失败,故无需担心命名错误;

(2)代码编写简单,使用方便,支持多种常见的查询,毕竟只按规范定义接口,无需自己实现;

缺点

(1)不支持动态查询条件;

(2)不支持多表查询(我猜的);

(3)属性较多或者属性较长时导致方法名超级长;

(4)有些时候由于特殊功能的限制导致属性不够规范,增加方法定义时的复杂度;

(5)不知道如今的eclipse对于此种API结构有没有提示,eclipse4.x以上版本时没用到过JPA,用JPA的时候换成使用IDEA了;


 点赞


 发表评论

当前回复:作者

 评论列表


留言区