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

  • 境外培训费计入关税完税价格
  • 企业新成立,何种情况下需要开始记账报税
  • 法人能把公司账户的钱都转走么
  • 出口不退税进项税如何处理
  • 汇算清缴所得税退税会计分录怎么做
  • 企业清算过程中应收应付的处置
  • 加盟费摊销会计分录
  • 用友如何取消月末结转
  • 建筑业预交税金怎么计算
  • 房地产开发贷款管理办法
  • 停车场吗
  • 增值税发票不见了可以重开吗
  • 企业所得税报表模板
  • 待认证进项税额借方余额表示什么
  • 为什么盈利的企业也有可能发生债务危机
  • 免税发票上税率是多少
  • 收到测试费几分钱如何做账
  • 成本费用率偏低
  • 总公司出货分公司怎么办
  • 进口商品买卖的关键环节
  • 企业搬迁至外地怎么办理
  • 多发的奖金收回怎么做账
  • deepin解锁文件
  • 污水处理费该谁交
  • php讲解
  • 在win10系统中复制的文件不能粘贴怎么办?
  • 双系统启动界面
  • win10系统损坏开不了机
  • 固定资产计提折旧的原则
  • ajax无刷新更新数据
  • csinject.exe是什么程序的进程 csinject进程是安全的吗
  • ccmexec.exe是什么程序
  • 应收账款保理的作用有哪些
  • 红字发票如何开具
  • 深度学习环境配置(pytorch版本)----超级无敌详细版(有手就行)
  • lvm部署的命令
  • php解释器工作流程
  • 保险公司应收保费汇报范文
  • 房屋租赁发票如何免税
  • 建筑材料开票可以抵税吗
  • mongodb如何分片
  • 帝国cms自动推送插件
  • 电子税务局如何添加办税人员
  • sqlserver2008安装完在哪打开
  • sqlserver数据库安装步骤
  • 待处理流动资产损益是什么类科目
  • 物业公司购买空调合法吗
  • 免征增值税的会计处理一般纳税人
  • 哪种发票可以报税
  • 今年发的去年的工资怎么扣税
  • 进项税额转出是什么科目
  • 土地回收补偿费怎么算
  • 理财产品产生的收益会成为本金吗为什么
  • 抵扣认证的发票怎么冲红
  • 软件行业成本如何归集
  • 税票名称开错了有影响么
  • 什么是暂估入账金额
  • 生产成本工时怎么算
  • 交易性金融资产公允价值变动计入
  • 累计折旧可以作为利润分配吗
  • 我国开征股票交什么税
  • 安卓系统强制竖屏
  • win10系统开机出现
  • 为什么我的win7系统会变成xp系统
  • Win10虚拟内存怎么转移
  • ubuntu下安装QT教程
  • linux的head命令
  • win7为什么不能设置滑动关机
  • winxp升级win7教程图文
  • linux系统中scp命令的使用介绍
  • windows 10预览版
  • awk中RS、ORS、FS、OFS的区别和联系小结
  • js字符串的操作方法
  • 批量ghost
  • jquery判断值是否为空
  • 提出好的建议
  • 深入理解新发展理念
  • 增值税税率为6%,怎么计算税额
  • 大宗物流服务平台
  • 非房地产企业转让旧房土地增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设