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

  • 金税盘开票软件密码忘记怎么办
  • 发放上年年终奖个税
  • 已交增值税如何做账
  • 现金流量表中的销售商品提供劳务收到的现金
  • 小规模纳税人出租
  • 怎么根据实发工资算应发工资
  • 电梯维保费属于建筑服务吗
  • 零申报资产总计不能为零
  • 国内支付业务收入怎么算
  • 股东放弃公司债权
  • 资本公积金转增股本是利好吗
  • 应收账款科目怎么写
  • 开票系统年费怎么缴纳
  • 残疾人就业保障金怎么计算
  • 白条入账的会计分录
  • 一次性收全年服务费怎么入账
  • 一般纳税人企业所得税政策最新2023税率
  • 现金流量表中收入怎么算
  • 企业固定资产出租取得的收入属于
  • 电子商务平台支付的区别
  • 管理费用的纳税调整
  • 金税盘点了没反应
  • 外包服务费税率是多少
  • 地产商自持是什么意思
  • 外商投资企业外债额度
  • 出口押汇和议付的区别
  • 营改增后装饰公司税率
  • 筹建期的工资
  • 长期借款和短期借款时间
  • 捐赠固定资产入账价值
  • php检测文件是否存在
  • qqbak文件怎么打开
  • 增值税发票红冲后税款怎么办
  • 格雷厄姆岛
  • download github
  • 网络用语屠夫
  • redissessiondao
  • php 接口
  • 建筑业如何开票
  • 管理费用增加记哪方
  • 资产负债表不平衡能结账吗
  • 收到工会经费返还做收入吗
  • 一切皆对象什么意思
  • 有赞微小店认证麻烦
  • 发票专用章刻制
  • 公司福利费用会计分录
  • 综合评价怎么改
  • 获取gridview某行某列的值
  • 补缴税款计入什么科目
  • 长期股权投资中级会计例题
  • 社保补缴收滞纳金吗
  • 员工报销固定资产怎么算
  • 更正会计凭证摘要怎么写?
  • 发票开出来对方不走账会怎么样?
  • 新建厂房需要缴纳什么税
  • 体检收据可以入档案吗
  • 融资租入固定资产计提折旧吗
  • 抄报返写
  • 已经开了发票需要退款怎么处理?
  • 金税盘可以申请发票吗
  • 股东增资有哪几种方法
  • 搭赠商品如何开票
  • innodb_trx表
  • 如何解决工作
  • 还原精灵使用教程
  • 电脑光驱怎么装系统w7
  • win7系统的虚拟内存在哪里
  • WNxp下让所有用户桌面显示系统默认图标的方法
  • rtk api error=3
  • 图片如何添加到word文档
  • 找不到config/index taro
  • jquery()
  • interview分析方法
  • javascript填表
  • js怎么获取复选框选中的值
  • javascript编程技术
  • jQuery 中ajax异步调用的四种方式
  • multiset volatile
  • 呼和浩特新城区政府官网
  • 重庆国税电子税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设