位置: 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桌面上显示时钟
  • php怎么上传多个图片
  • 补充医疗保险是六险吗
  • win11怎么打开设置
  • php读取opc
  • 富山和富士山
  • 小米路由器青春版r1cl参数
  • 自有物业出租需交税吗
  • javascript生成器
  • 税务稽查的进项税怎么处理
  • 小狐狸吧
  • cloa框架
  • 股东以原材料出资
  • 火爆全网的头像男
  • jdbc连接mysql的url怎么写
  • 小轿车折旧年限
  • 嵌入式软件产品税率
  • 监控设备属于固定资产还是在建工程
  • 微信转账要如何退回去
  • 发票收件人信息
  • ps遇到了文件尾
  • 个体户季度免多少税
  • 预付卡发票如何开
  • 一张记账凭证写不下时合计怎么写
  • 坏账核销会计处理
  • 应税货物及劳务 增加
  • 营业税改增值税是什么意思
  • 小规模交社保有人数限制吗
  • 社保由税局代收马上开始
  • 资产负债表编制
  • 个税手续费返还比例
  • 提取备用金现金流量如何填写
  • 售后更换零件的申请
  • 收到货款确认收入还是开好发票确认收入
  • 单位食堂收费制度
  • 如何解绑企业开票员身份
  • 固定资产转固流程图
  • 累计折旧可以作为利润分配吗
  • mysql优化技巧实战
  • mysql5.7主从配置
  • mssql insert into 和insert into select性能比较
  • mysql “ Every derived table must have its own alias”出现错误解决办法
  • 自定义设置微信来电铃声
  • Win10预览版拆弹
  • ubuntu搜索已安装软件
  • win制作mac启动
  • Windows 7 RTM、Vista、XP 性能测试
  • 怎么关闭获取手机信息
  • win8应用商店无法连接网络
  • ssh远程登录设置
  • win7系统如何查看内存条型号
  • win10如何打开hlp文件
  • linux用什么版本
  • windows7word文档打不开怎么办
  • Bullet(cocos2dx)学习制作桌球游戏之前期准备
  • unity通过脚本控制骨骼节点让模型动起来
  • jquery是基于java的吗
  • 常见的java数据类型有哪些
  • 欠税多久法院立案
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设