位置: 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数据库网址)

  • 销项税额期末余额
  • 核定征收企业所得税暂行办法
  • 汇算清缴需补税
  • 牵引车和挂车都要购买交强险吗
  • 企业返聘退休人员劳务合同
  • 现金存银行会计分录
  • 怎么增加资产减少负债
  • 企业亏损结转年限举例说明
  • 货车压线行驶怎么处罚
  • 无形资产资本化会计处理
  • 农产品增值税进项税额核定扣除办法
  • 营改增抵减的销项税额是什么意思
  • 国有资产如何保值
  • 股票质押式回购交易业务
  • 装修费用如何摊销成本
  • 招待费进项税如何抵扣
  • 餐饮行业享受免增值税政策怎么开发票
  • 本期有进项没有销项需要转出增值税吗?
  • 减免税期间是什么意思
  • 红字增值税专用发票信息表能作废吗
  • 填写a201030减免所得税优惠明细怎么填
  • 交纳经营所得的个税怎么做分录?
  • 加工费可以计入管理费用吗
  • c盘垃圾太多需要重装系统嘛
  • 小规模减免的税额怎么做账
  • 增值税发票的作用
  • linux系统查询mac地址命令
  • linux从入门到什么搞笑
  • word无法创建工作环境
  • 电脑任务栏消失怎么把它显示出来
  • 对公账户转私人账户手续费多少
  • php课堂笔记
  • php写文件函数
  • 应交税费应交增值税明细账怎么填
  • css中文字垂直排列
  • 完美怎么用
  • php注释有几种?如何表示?
  • 现金日记账每月都做本年累计数吗?
  • 增值税专用发票和普通发票的区别
  • 运输发票备注栏里一般需要备注的内容包括
  • 乘客人身意外保险单可以报销吗
  • 工资单应该盖什么章
  • 银行代发工资流程
  • mysql查询在什么之间
  • 应付账款的四大基本要素
  • 安全生产费用应当专户储存专款专用专户核算
  • 买赠销售账务处理
  • 预付款项怎么做分录
  • 支付收购股权款如何做账
  • 应付账款现金折扣会计分录
  • 增值税专用发票查询系统官方网站
  • 取得虚开
  • 个人微信转账可以给对方开发票吗
  • 误餐补助标准国家规定
  • 预缴的税款抵扣有时间限制吗
  • 存出保证金的账务处理
  • 货款已付,货未收到分录
  • 建账的要点及应注意的问题
  • 废品损失的计算方法及废品损失的范围
  • mysql -ne
  • mdf文件在哪
  • soft version
  • docker基础教程
  • hyper-v以后安装操作系统
  • Ghost XP SP3 YN8.0装机版 (雨林木风)
  • Win10桌面任务栏能不能删除
  • Linux查看文件的大小
  • win10自动更新win11怎么办
  • android游戏开发论文
  • Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社
  • unity网络通信插件
  • 安卓手机本地
  • 服务器限制流量
  • 检测shell脚本语法错误的命令
  • shell脚本中获取日期
  • jquery 获取滚动距离
  • 东莞市电子税务局app
  • 河北电子税务局移动端
  • 网上缴费后如何复电
  • 福建省人民医院院长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设