位置: IT常识 - 正文

基于JpaSpecification实现的复杂分页查询(基于个人同意处理个人信息的个人什么撤回其同意)

编辑:rootadmin
一、编写JPA复杂分页查询由来 ​ 新公司项目中使用的ORM框架为JPA框架,但是我们后端写的分页查询接口都各不相同。存在扩展性差、支持的查询类型单一、无法复用等问题。 ​ 所以我在写分页查询的进行了一些设计,将分页查询设计成了可拓展、功能复杂的一个公共分页查询方法。该公共方法所有使用JPA框架的项 ... 一、编写JPA复杂分页查询由来

推荐整理分享基于JpaSpecification实现的复杂分页查询(基于个人同意处理个人信息的个人什么撤回其同意),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:基于专业性的家校双向互动,需要家长的学校教育参与,基于专业性的家校双向互动,需要家长的学校教育参与,基于专业性的家校双向互动,需要家长的学校教育参与,基于stm32的毕业设计,基于专业性的家校双向互动,需要家长的学校教育参与,基于网络创新形成的大数据的最突出特征是什么?( ),基于专业性的家校双向互动,需要家长的学校教育参与,基于核心素养下的大单元教学设计,内容如对您有帮助,希望把文章链接给更多的朋友!

​新公司项目中使用的ORM框架为JPA框架,但是我们后端写的分页查询接口都各不相同。存在扩展性差、支持的查询类型单一、无法复用等问题。

​所以我在写分页查询的进行了一些设计,将分页查询设计成了可拓展、功能复杂的一个公共分页查询方法。该公共方法所有使用JPA框架的项目都可以使用。

二、设计思路2.1 、请求参数设计

​首先复用性高,首先想到使用反射或者泛型来实现。

​复杂的查询类型,可以想到的精确查询、模糊查询、批量查询、段查询这些。

基于JpaSpecification实现的复杂分页查询(基于个人同意处理个人信息的个人什么撤回其同意)

​除了查询功能支持,还需要有分页相关的参数,然后还要能够支持排序功能。

​所以再设计分页接口请求参数时需要考虑能够满足上面能够功能,最终设计出来的分页请求参数PageParam如下。

2.2、处理请求参数

​由于使用的是JPA框架,用过这个框架的同学都知道这个框架的查询都是通过实现JpaRepository<T, ID>接口来完成的。下面列举一下常用的查询手段,

​1、通过Example.of()构造查询对象,这个只能进行精确查询。

​2、通过方法命名形式进行查询,eg findAllByxxxxAndxxxxInAndxxxxIsTrue()。这个支持的查询很多但是对命名规范有要求且如果查询条件过多,方法名就很长很长了。

​3、使用@Query完成较为复杂的查询,方法名不会很长。但是扩展性、复用性差,该查询条件就得改动查询方法。

​4、Specification,这个就是本文实现的关键,通过Specification构造复杂查询条件进行查询。如果不了解Specification的用法建议先去了解一下其用法在继续浏览下文。

​具体构造实现请跳转构造查询条件

三、实际使用

​处理完成之后实际处理起来就比较简单了。如果还有什么疑问可以邮件私我,邮箱号在最下面。

/** * 分页查询 * @param pageParam 查询条件 * @return */@Overridepublic Page<XXXXVO> page(PageParam<XXXXVO> pageParam) { XXXXVO vo = pageParam.getVo(); pageParam.getSorts().put("updateDate", JpaUtils.SORT_DESC); if (null == vo) { vo = new XXXXVO(); } Pageable pageable = jpaUtils.getPageable(pageParam); //vo转po XXXXPO entity = DozerUtil.transfor(vo, XXXXPO.class); //这个就是前面实现的构造查询条件方法 Specification<XXXXPO> spec = jpaUtils.getSpec(entity, pageParam); //dao接口用过jpa的都清楚,实现了JpaRepository用来的接口 //如果你的dao没有这个方法,dao可以实现一个自己
本文链接地址:https://www.jiuchutong.com/zhishi/304559.html 转载请保留说明!

上一篇:python运算符的优先级规则(Python运算符的优先级别)

下一篇:phpcms v9数据库在哪(php数据库网址)

  • 银行存单丢失怎么办理取款
  • 增值税不含税销售额怎么计算
  • 海关缴款书有效期多久
  • 小规模公司用什么会计准则
  • 在建工程转固定资产账务处理
  • 税务登记注销前异常项目类型非强制什么意思
  • 实际收到股票股利的分录
  • 应交税金应交增值税已交税金怎么结转
  • 汽油费能计入办公费吗
  • 公司一年未经营怎么赔偿
  • 一般纳税人苗木发票可以抵扣吗
  • 高新技术企业怎么申报企业所得税
  • 营改增后建筑业怎么开票
  • 简述分期收款业务的处理流程
  • 一般纳税人所说的税率是
  • 什么发票 既可以抵扣又可以退税
  • 加计抵减什么时候做账务处理
  • 做买卖交税
  • win11任务栏如何设置在最左边
  • 对账工作的主要内容为什么不包括账表核对
  • 股东之间转让股权需要股东会决议吗
  • 在linux操作系统中
  • win11自带的播放器
  • 关于激活函数的说法错误的是
  • 代理进口的增值税如何入账
  • 社保缴费半年
  • 税盘进项税额怎么做
  • 消费者取得哪种权利
  • vue角色管理
  • js正则用法
  • 命令arp-a
  • /f命令
  • vue笔记大全
  • 农产品进项税抵扣填报方法
  • 企业扣税方式
  • phpcms验证码不显示
  • mongorepository排序
  • discuz设置门户
  • 印花税申报完成如何缴纳
  • 清算时实收资本需要做收入吗为什么
  • 材料成本差异的超支与节约
  • 长期借款的会计分录怎么写
  • 增值税留抵税额借贷方向
  • sql死锁的简单例子
  • 劳务合同如果不发工资怎么办
  • 业务招待费税前扣除标准2020
  • 外埠存款会计分录怎么写
  • 非营利组织注册资金可以用吗
  • 空调抵扣进项税
  • 4s店出售试驾车的增值税是多少
  • 设备折旧怎么记账
  • 领用自产产品用于固定资产
  • 个体工商户个税2023最新政策
  • 现金日记账怎么填写规范
  • mysql索引基础
  • win8怎么没有我的电脑
  • 启动mac问号文件夹闪烁怎么办
  • RedHat 9.0下Apache+PHP+MySQL服务器安装配置
  • ssd安装centos7
  • 无线网络连接上但上不了网
  • centos分区命令
  • win10 mobile 1709
  • CentOS中-bash: lsb_release: command not found错误的解决方法
  • jquery文本框内容改变事件
  • 接入hpool
  • 我是如何从0开始做到年入1000+万的
  • python 多线程调用
  • python的遍历
  • string剪切
  • android javascript 混淆配置。
  • 安卓瀑布流
  • 江苏城乡医疗保险网上缴费2024年
  • 农机行业的市场前景
  • 浙江公务员冬令时上班时间
  • 税务扣税账户余额不足
  • 财政局,人社局和法院哪个好
  • 担保机构和银行的区别
  • 关于抓落实的诗句
  • 关于进一步加强工作纪律改进工作作风的通知
  • 地下车库质保期多久
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设