首页 > jpa分页查询_spring data jpa 居然提供了这么多查询方式!

jpa分页查询_spring data jpa 居然提供了这么多查询方式!

2634478e0052e65e2a47a9bdbac2d15b.png

spring data jpa提供了多种查询方式,如下:

方法名称查询

0beab7ffd57b7e58b4c7b80efa12ca9c.png

继承Repository接口

测试代码

c5562cefdfff8d3da7a1c9061807bef7.png

方法名称中支持的关键字(官方文档提供)

0f242d82dbd7a8199cf71bd2d4fb55cd.png
ae9a3ee207c49926afb780a15208f2f4.png
c919949fb70256889c89718b396205a8.png

使用JPA命名查询

在User实体中定义jpql(类似于hql)

07f46738a1a3a8d55e2c13ff7b1d75e4.png

jpql(百度百科)

3cdd75d53c604c13de0034128a45d45a.png
b33dcd4852a2e01654a3cba85915d8b5.png

继承JpaRepository接口

测试

fcfa1abf237bf81c6df3f926f22a6a50.png

使用@Query查询

e2238eb62f8f6a80eb35d55f6df478fe.png

和命名查询不同的是,将jpql写到了 dao 方法上,感觉这样代码可读性高,移植性不高。

测试

6b983e7fc1a152c45a7ca019f07b9b21.png

排序

4d79baa618c6ab9ed1776b06fdbadd19.png

dao

63d6ba72b5704fd91a3ce1fafddfc797.png

测试

命名参数

365a44318882e4aed3d531827cc22280.png
f9e2802112b3e64a09e3f5a31607ce7e.png

SpEl表达式

9b2d56f40912ac8d5ddfc812e20f0262.png
f57163dfb8f722826d1798474a16bc09.png

根据示例查询

8a1be5ddbf31b7bcb9503348eb3b2edf.png

根据规格查询

9dba136181e9b68603dc81a39c66bfcf.png

继承JpaSpecificationExecutor接口

eb8b29821ae5f510a49280db65332579.png

这种方式的更加适用于表单查询,从web层指定查询条件,代码写好后,如果要修改查询条件,只需要改web层代码,不需要改service 或者 dao层代码。

本地sql查询

72482b48401b3ea33a4be31d84f95ed5.png
b8b3e403866cf845c75af97f25d6bd10.png

分页查询

2df81e763abc2c1877426abc735ced18.png
152dfe9e5536d27d04209dfe98d5620a.png

这里已经过时,官网示例还没有更新

sql输出:

Hibernate: select user0_.id as id1_0_, user0_.name as name2_0_ from User user0_ where user0_.name=? limit ?, ?

Hibernate: select count(user0_.id) as col_0_0_ from User user0_ where user0_.name=?

好了,以上就是spring data jpa提供的主要查询方式,其中个人还是比较钟爱方法名称查询,@Query查询。

你喜欢哪一种?

更多相关:

  • 关注我的头条号,获取更多运维相关知识。你想了解哪方面的运维知识,请评论区告诉我,我会尽快更新~MySQL 数据库,基本上运维都会接触到,而对于数据库的性能优化,想必是大家比较关注的,下面分享一些调优技巧。先决条件安装 MySQL,版本大于 5.7有部分数据操作系统、数据库管理员权限MySQL 系统性能优化在系统层面,调整硬件和软件选项...

  • 转自:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html   对于SqlServer的优化来说,可能优化查询是很常见的事情。关于数据库的优化,本身也是一个涉及面比较的广的话题,本文只谈优化查询时如何看懂SqlServer查询计划。由于我对SqlServer的认识...

  • 一.实现基础功能之一(记账)   一个记账本最基础之一的功能就是记账,所以也是首先要解决的问题,我选择了上学期使用的MySQL数据库来对账本进行存储。   我选择记账的方法是分开记账,就是支出放在一个表,收入放在一个表,这样在数据库方面会比较的直观的看到,但是在显示的时候就会产生部美观的问题,就是支出和收入都是分开来的,没有办法按照时...

  • 在Navicat中,我们选中一个表,双击打开,这是如果要新建查询这个表的sql语句,可以直接用快捷键  ctrl+q  会自动打开查询窗口,并直接写好 sql:select * from (当前打开的表名) 我们直接在后面补全查询条件即可,非常方便。 转载于:https://www.cnblogs.com/libin6505/...

  • THE START更新堪称轻量级MATLAB的一款软件最新版-Maplesoft Maple 2019.2 中文版。Maple是符号和数字计算环境,也是一种多范式编程语言,由Maplesoft开发,还涵盖了技术计算的其他方面,包括可视化,数据分析,矩阵计算和MATLAB连接。MapleSim工具箱添加了用于多域物理建模和代码生成的...

  • 同学们,你们在学习他人的代码,是否见过这样的代码 def main(): def user_info(gender): 当你还是个小萌新时,你一定会认为这是个很牛逼的语法。 当你有了一点基础时,你一定会想要了解这个语法,并且尝试去使用它。 那么今天,我们便来了解这个牛语法。 有了一点点的python基础,我们来看这段代...

  •     自从用了这些快捷键,鼓励师也不需要了,代码开发效率蹭蹭提升!!! ctrl+shift+[折叠代码 (这个比ctrl+k ctrl+l、ctrl+k ctr+j不知道好用多少倍!) ctrl+shift+]展开代码 ctrl+shift+T打开手贱不小心关掉的窗口 【推荐】ctrl+shift+O打开当前文件...

  • 在提交代码之前,建议最好先Fetch代码下来(如果有冲突,系统会提示),然后再操作Merge到本地分支,这样做是为了避免有其他人同时修改了当前分支,如果直接用Ctrl+T(pull代码)极有可能覆盖本地分支最新代码,安全起见先Fetch代码(Ctrl+Alt+Shift+1)——所谓:小心驶得万年船!...

  • 每次复制代码时,如果代码里有 // 这样的注释就容易让格式乱掉,通过下面的设置就可以避免这种情况。 粘贴代码时取消自动缩进 VIM在粘贴代码时会自动缩进,把代码搞得一团糟糕,甚至可能因为某行的一个注释造成后面的代码全部被注释掉,我知道有同学这个时候会用vi去打开文件再粘贴上去(鄙人以前就是这样),其实需要先设置一下 s...