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

  • 简易计税征收率是多少
  • 增值税的征税范围
  • 品种法,分批法,分步法是什么
  • 付款申请单是原单据吗
  • 发票报送日志不完整
  • 股东向企业借款属于关联交易吗
  • 股权变更前账务怎么处理
  • 免单计入什么科目
  • 退回多交企业所得税分录
  • 员工年终福利发什么
  • 增值税普通发票有什么用
  • 企业购置房产交什么税
  • 未实现但已确认的风险代理费收入如何处理?
  • 自然灾害造成的存货净损失计入什么科目
  • 委托加工材料收回后的入账价值
  • 采购医药费差价会计分录
  • 样品寄送时运费支付的对策
  • 税会差异分为哪几类
  • win10通知怎么打开
  • 建筑公司合作模式有哪几种
  • 如何设置鼠标移过超链接
  • explorer.exe是啥意思
  • 报废机器设备如何缴纳增值税
  • laravel框架实现增删改查
  • 实际退税能退多少
  • 制造企业的印花税税率
  • 通行费发票认证怎么操作
  • 装修阶段监理注意事项
  • 人工智能agi
  • 直接进入税金及附加的科目
  • chage -l命令
  • calc下载
  • 哪些税费需要计提
  • java多线程经典案例
  • python 定制类
  • 公司账户收款退回怎么查
  • javagui框架
  • 独立核算的分公司
  • 工程施工的间接费用如何归集分配
  • 契税计入税金及附加吗东奥
  • 建筑服务包括哪些内容
  • 跨区域预缴税款流程
  • 无票利息支出可抵税吗
  • 预付账款没有收到货怎么处理
  • 出售无形资产取得的收入计入什么科目
  • 暂估出口收入如何计算
  • 预期信用损失影响损益吗
  • 税控盘服务费什么样的发票可以抵扣
  • 什么是记账凭证?有哪些分类
  • 如何用virtualbox安装linux
  • centos占用内存高
  • Win7安装i219v网卡驱动
  • win 7操作系统安装
  • win10系统预览版
  • windows查询
  • win10鼠标箭头怎么换样式
  • macos vmware
  • linux扫描硬件
  • Linux操作系统中怎么永久设置环境变量?
  • js时间日期
  • python mypy
  • node urlencode
  • 在文本输入框中的输入内容是
  • jquery的加载事件
  • unity3d开发流程
  • 用shell写一个脚本,对文本中无序的一列数字排序
  • python怎么写爬虫
  • 安卓框架是什么怎么用
  • rsa 密钥格式
  • js阻止浏览器后退
  • javascript中继承
  • jquery控制display属性
  • 四川省税务干部学校官网
  • 有机肥料销售是做什么的
  • 销售旧货如何开票
  • 环保税申报流程视频
  • 香皂需要换着用吗
  • 汽车购车发票开完票能更改名字吗?
  • 个体经营所得申报
  • 地税注销需要什么资料
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设