SpringBoot JPA实践之方法属性名查询
JPAadmin 发布于:2020-04-22 22:24:16
阅读:loading
在前一篇提到Spring JPA提供了众多方法,但往往在很多时候我们也都是直接使用最简洁方便的方式进行调用,本文称之它为简单查询,即:解析方法名称的特殊定义来实现方法查询,这API也是真的敢这么干,佩服佩服,再加上IDEA的强大提示,写起来真的是非常的方便,以至于我们需要在接口中编写自定义查询时,通过定义方法名实现,参考如下:
一般查询方法约定以query、find、get开头的规范,在输入上述开头时IDEA自动给出对应的方法提示,而后选择一项后继而提示Entity中的属性,再选择属性后弹出下一个查询条件的连接符,创建查询方法提示参考如下:
本文通过两个示例来体验一下这种所谓的简单查询,它提供了非常强大的匹配模式与逻辑,可满足多种场景的实际需要,示例分别是两个参数的等值查询与范围查询,范围查询给出使用Between and 与 like 的模糊搜索方式,比较简单,参考如下:
查询输出sql语句如下:
以上两种查询体验到了它的便捷性,其实究其实现原理肯定是接口代理实现与动态方法名的解析,至于它提供的OR、Exist、Not NULL等本例不再给出,探讨一下个人认为它的优缺点:
优点
(1)完整的方法命名规范性校验,Spring Boot启动时会检查所有JPA Repository定义的方法,如果符合这种简单查询时分析这个方法的合法性校验,如果不符合规范直接启动失败,故无需担心命名错误;
(2)代码编写简单,使用方便,支持多种常见的查询,毕竟只按规范定义接口,无需自己实现;
缺点
(1)不支持动态查询条件;
(2)不支持多表查询(我猜的);
(3)属性较多或者属性较长时导致方法名超级长;
(4)有些时候由于特殊功能的限制导致属性不够规范,增加方法定义时的复杂度;
(5)不知道如今的eclipse对于此种API结构有没有提示,eclipse4.x以上版本时没用到过JPA,用JPA的时候换成使用IDEA了;
点赞
发表评论
评论列表
留言区
- SpringBoot JPA实践之框架搭建
- SpringBoot JPA实践之BaseRepository
- SpringBoot JPA实践之自动生成Entity
- SpringBoot JPA实践之API介绍
- SpringBoot JPA实践之Example对象查询
- SpringBoot JPA实践之Named查询
- SpringBoot JPA实践之@Query查询之参数传参方式
- SpringBoot JPA实践之@Query查询之动态查询条件
- SpringBoot JPA实践之@Query查询之接口结果集
- SpringBoot JPA实践之@Query查询之分页实现
- SpringBoot JPA实践之EntityManage查询返回自定义DTO
- SpringBoot JPA实践之EntityManage查询返回自定义DTO的代理实现
- SpringBoot JPA实践之Specification查询分页
- SpringBoot JPA实践之表达式自定义属性与方法
- SpringBoot JPA实践之小技巧汇总