ireport 分页配置每也显示多少条_SpringBoot整合SpringDataJPA实现自定义查询以及分页查询...

一、用@query实现自定义查询操作

首先回忆一下,前面我们创建studentRepo类继承JpaRepository接口,即可实现最基本的crud。如下:

5085f5da3d76475ca1f5fee114e68e79

那么我们要自定义查询怎么办呢?如下:

42e58ded21874a4d90113a245355f2f0

我们定义了两类方法,这两类方法代表Repository使用的一种基本方法,

  • @Query是用来配置自定义SQL的注解,通过这个声明,Spring Data JPA就知道该使用什么HQL去查询数据,?1表示用方法中的第一个参数。
  • 后面追加参数nativeQuery = true则是表明了使用原生的sql(这个是我习惯的,因为之前用的mabatis自己写sql可溜了),如果不配置,默认是false,则使用HQL查询方式。
  • 第二个方法我们并没有定义任何的Annotation,但是它也可以查询得出来,在Spring Data JPA中提供了一种衍生查询,只要函数的声明有findBy,getBy,readBy,他就会去读读取。表示根据address和age进行查询,方法的第一个参数就是address,第二个参数就是age,readByXX,getByXX都是一样的道理,这些方法的返回值可以是一个列表,也可以是一个对象,spring Data JPA会自动根据返回类型来进行处理。我们不用写实现类,Spring Data JPA会自动帮助我们实现查询。具体关键字代表的意思看下面的一览表

二、查询方法命名规则一览表

bbdbb634505045d2a66ae699cf8ae94c
d83527d37b27424c9299d4090fba6df5

三:、@Query配合@Modifying

从名字上可以看到我们的@Query注解好像只是用来查询的,但是如果配合@Modifying注解一共使用,则可以完成数据的删除、添加、更新操作。下面我们来测试下自定义SQL完成删除数据的操作,我根据名字、密码字段共同删除一个数据,接口代码如下图所示:

00fdbc9c9fc14c40a4c4eb0883c4aeba

注意,若看到抛出的异常TranscationRequiredException,意思就是你当前的操作给你抛出了需要事务异常,SpringDataJPA自定义SQL时需要在对应的接口或者调用接口的地方添加事务注解@Transactional该repo类需要添加事务注解@Transactional,来开启事务自动化管理。

四、spring boot的事务

Spring最大的一个优点就是声明式的事务,在原来的开发环境中我们需要在beans.xml中配置事务在哪些类上有作用,现在SpringBoot已经帮助我们完成了这些配置,我们仅仅需要加几个注解就可以解决问题。

那么Spring boot是怎么做的事务处理呢?SpringDataJPA的CrudRepository,JPARepository等默认接口的实现类是SimpleJpaRepository(如下图),大家可以看一下这个代码,我们会发现这些方法已经自动添加了事务处理。

ab0427db013b4efe82a576ebd2445fe2
  • @Transactional(readOnly = true)这说明该类中的所有方法都是加入到事务中的,而且都是只读的,所以类中的默认方法都是事务只读。
  • 对于删除修改等操作,我们只要在该方法上添加@Transactional,就说明该事务是可以修改的。

五、分页排序查询原理:

首先,回忆一下JPA体系图,如下

6fe949e45cf144829342cf7010203bdb

在Spring Data JPA中实现分页需要用到三个接口

  • PagingAndSortingRepository
  • Pageable
  • Page

PagingAndSortingRepository是spring data jpa实现分页的工厂

b4a70ed6b3ae465d9ef5c56445ff1482

第二个findAll方法就是实现分页的方法,参数是Pageable类型,同参数传入当前的分页对象(如:第几页,每页多少条记录,排序信息等),查询完成之后会返回一个Page的对象。Page对象中就存储了所有的分页信息。Pageable的源码如下

df6c74303aea4048884703829dbeb0f6

Pageable是一个接口,它的实现类是PageRequest,PageRequest有三个构造方法

d95dbb855ad948cf89685d41838ce114

Page实现了一个Slice的接口,通过这个接口获取排序之后的各个数值,这些方法都比较直观,通过名称就差不多知道该是什么样的一个操作了,大家可以自行查阅一下Page和Slice的源码,这里就不列出了。

六、分页查询实操:

接下实现以下分页的操作, 创建一个StudentPageRepository来实现分页操作。

6e54302180f54d5491d791bb56a67aa3

虽然PagingAndSortingRepository接口中只有findAll方法,但是我们依然可以使用Repository中的衍生查询,我们只要把Pageable放到最后一个参数即可。测试代码

d8cdd2c539d24abe9d6ceb3dbfcaf61c

分页的方法非常的简单即可完成。

七、排序查询实操:

下面我们来实现一下排序的操作,排序和分页类似,我们需要传递一个Sort对象进去,Sort是一排序类,首先有一个内部枚举对象Direction,Direction中有两个值ASC和DESC分别用来确定升序还是降序,Sort还有一个内部类Order,Order有有两个比较重要的属性Sort.Direction和property,第一个用来确定排序的方向,第二个就是排序的属性。

Sort有如下几个构造函数

b1b0c5ac236546e399a7b9af869d5306

排序的代码

f1648f5c00e0408e99632e492ac6a85e

七、分页+排序查询:

如果希望在分页的时候进行排序,一样也非常容易,看一下下面PageReques的构造函数

ab47853018b448b79bed4ea04ecd1d62

看到这里我相信大家已经会各种排序操作了,这里就不演示了,但是在实际的开发中我们还需要对排序和分页操作进行一下封装,让操作更方便一些

喜欢的小伙伴,点个关注吧,每天分享新的内容!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iReport是一款非常方便实用的报表设计器工具,通过iReport可以轻松地设计和生成各种形式的报表。对于新手来说,理解如何使用iReport可能有些困难,因此一份文教程非常有帮助。 在《iReport文教程.doc》,我预计会找到以下内容: 1. iReport的介绍:教程应该会对iReport的功能和优势进行简要的介绍,包括它的报表设计能力、数据源连接、布局设计等。 2. iReport的安装和配置:教程会提供详细的步骤,指导用户如何下载、安装和配置iReport。这包括选取正确的版本、安装JDK、设置环境变量等。 3. 报表设计基础:教程应该会解释iReport的一些基本概念和术语,如报表元素、数据源、参数等。此外,还应该教会用户如何创建新的报表、选择合适的布局、调整样式和格式等。 4. 数据源连接:教程可能会介绍如何连接各种不同的数据源,如数据库、XML文件等。这包括配置连接参数、执行查询、获取数据等。 5. 报表设计高级技巧:教程可能会深入探讨一些高级的报表设计技巧,如子报表的嵌套、图表的设计、件格式化等。 6. 报表导出和发布:教程可能会介绍如何将设计好的报表导出为不同的格式,如PDF、Excel等。此外,还可以教会用户如何将报表集成到自己的应用程序。 总的来说,《iReport文教程.doc》应该是一份详细而全面的教程,通过阅读和理解教程,用户能够快速上手并熟练使用iReport进行报表设计和生成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值