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

  • 计入税金及附加的科目
  • 开增值税发票规格是否可以不用填
  • 实收资本变动额怎么算
  • 增值税抵扣凭证装订要求
  • 企业清算货币资金怎么算
  • 误餐费没有发票怎么说明
  • 股权转让印花税税目怎么填
  • 客户为了凑整多打的款计入什么科目?
  • 制造行业运输费包括哪些
  • 非正常损失允许税前扣除吗
  • 银行里的钱没有了怎么办
  • 堤围费是什么意思
  • 企业所得税汇算清缴申报表
  • 股息率超过10%的公司
  • 金融公司一般有哪些业务
  • 实收资本印花税最新规定
  • 整体购买企业资产涉及哪些税
  • 供应商把价格算错了怎么办
  • 出口押汇申请书
  • mac安装双系统教程
  • 差额部分 扣除部分
  • 股权转让要交什么税举例
  • 收到员工罚款分录
  • 企业与员工之间的法律
  • framework3.5怎么打开
  • php编程技术
  • mysql触发器创建
  • 中秋快乐的祝福语怎么说
  • 应收账款科目有哪些类别
  • MS Excel: COUNTIF Function (WS)
  • 公司注册资金减资要交税吗
  • elementui的表格
  • 简述跨期摊提账户
  • 员工办理健康证需要什么材料
  • 所有者权益期末余额-年初余额=净利润吗?
  • 招待客户发生的住宿费可以抵扣吗
  • 小规模季度免税政策
  • 企业金融资产包括银行存款吗
  • 技术转让和技术开发区别
  • 数据库关键字有哪些
  • 结转成本注意事项
  • 无票收入怎么计算
  • 扇贝的储存方式
  • 已认证的发票要冲红要退票吗
  • 其他权益工具投资公允价值变动计入什么科目
  • 投资有哪些方面
  • 增值税专用发票查询系统官方网站
  • 过路费计入差旅费还是车辆
  • 投资款计入哪个科目
  • 个体户不交税会判刑吗?
  • 会计帐本分为哪几类
  • mysql的操作
  • mysql基础概念
  • 海量数据的查询
  • SQL Server Bulk Insert 只需要部分字段时的方法
  • 阿里云 centos7 替换
  • ug实体命令怎么使用
  • win10预览版和正式版区别
  • android x86 4.0 iso
  • repair.exe是什么软件
  • Windows时间同步时出错该怎么解决?
  • os x10.11el capitan beta6更新了什么?os x10.11el capitan beta6发布下载
  • win8.1安装更新卡住
  • linux默认文件大小
  • pcalc是什么软件
  • Win10 Mobile 10586正式版即将向Insider用户推送
  • ReactNative 之FlatList使用及踩坑封装总结
  • div+css布局是什么
  • vue3 todo
  • java颜色代码对照表图片
  • 浏览器url怎么看
  • js的select
  • 普通话的对话
  • 用javascript
  • 国家税务总局全国增值税查询
  • 12123人工咨询电话
  • 移动退订业务怎么恢复
  • 威科先行法律信息库价格
  • 东莞为什么这么多人
  • 山东省梁山县属于什么市?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设