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

  • 小规模纳税人销售额超过500万
  • 计算本月应交所得税
  • 出口货物不报关走快递
  • 小规模纳税人未开票收入如何填申报表
  • 土地使用税是新增税吗
  • 银行利息支出税前扣除标准
  • 用友u8固定资产折旧怎么生成凭证
  • 企业所得税发票税前扣除异常
  • 购买生产原料分录
  • 小规模开票软件怎么下载
  • 有期末留抵税额增值税和附税还用计提和缴纳吗
  • 退货的发票还能查询到么
  • 物业公司代收水电费会计分录
  • 有代扣个税的是什么人
  • 旅游公司发票企业能报销吗
  • 盐酸编号
  • 营改增来了!会计人应如何自处
  • 商家拒开发票的五大借口
  • 开具的增值税专用发票上注明的价款为50万元
  • 一般纳税人税控盘维护费会计分录
  • 增值税附加税怎么计提
  • 移动通信定额发票
  • 补记以前年度收入分录
  • 样品寄送时运费支付的对策
  • 调增应纳税所得额季度申报表怎么填
  • 滴滴发票开公司名称可以抵扣进项吗
  • 发票上没有校验码
  • 文件类型设置
  • 抵扣了进项税额
  • 年末一般纳税人税率表
  • 电脑任务栏图标怎么全部显示出来
  • win11 build 22000.65
  • 最早的拍照手机是哪一年
  • php实现搜索的方式
  • phpstorm 断点
  • 子公司财务管理策略有哪些
  • 微信php开发教程
  • 贷款减值损失准备怎么算
  • php密码修改
  • python网络爬虫技术
  • 大学网页制作作业dw
  • phpforeach
  • 一分钟玩转钉钉文档是什么东西
  • 完美解决win10间歇性掉线
  • 直线折旧法账务处理例题
  • 增值税专用发票电子版
  • 补发工资个人所得税税
  • 客户多付的货款计哪里
  • 一次性用品可以做什么东西
  • mysql 重复记录查询
  • 收到银行开具的利息发票怎么做账
  • 消防工程改造方案
  • 业务招待费的范畴
  • 企业以现金形式发工资
  • 净资产收益率多少才是好股
  • 增资扩股对原股东的影响
  • 高新技术企业一定是先进制造业吗
  • 法院的申请执行费是多少
  • 收到发票税点计入什么科目
  • 物流公司怎么做利润高
  • 储存扩展容量
  • win8.1无法进入系统
  • windows终端美化
  • 腾讯linux服务器
  • windows为什么会成功
  • debian linux教程
  • unity性能优化工具
  • android开发环境的搭建步骤
  • linux监控cpu使用率脚本
  • unity 3.0
  • python strip函数作用
  • unity销毁预制体
  • docker编写dockerfile
  • python2编码问题
  • javascript入门基础
  • 商铺土地增值税预缴税率是多少
  • 广州税务举报电话
  • 土地买卖谈判开场陈述
  • 烟草税多少比例
  • 长期挂账的其他应付款的规定
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设