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

  • 应交增值税一般纳税人的账怎么做
  • 分期付款的消费税按实际收入算吗对吗
  • 应交税费科目的借贷方向
  • 年报资金数额要怎样填
  • 发票没用完可以申请超限量吗
  • 小微企业增值税起征点是多少
  • 转账支票和转账凭证
  • 物业补贴计入什么科目
  • 工程节点奖金
  • 报销业务招待费用主题
  • 异地预缴企业所得税
  • 收到供应商开具什么发票
  • 金税盘不能清卡是啥原因
  • 小微企业核定征收所得税税率
  • 高速公路通行费抵扣最新规定
  • 下雨被水淹
  • 收到注册资本需要开发票么
  • 普通发票要写增值税吗
  • 所得税季报总资产是什么
  • 财政返还额度会计分录
  • 怎么关闭iphone手机
  • 电脑怎么一键返回到桌面
  • 合伙企业是怎样分红的
  • 个人综合所得适用什么税率?
  • 天猫的软件服务费指的是什么
  • 对公网银数字证书
  • php数组函数输出《咏雪》里有多少"片"字
  • 职工教育经费会计准则最新规定
  • win7安装高版本chrome
  • 图片转base64格式返回给前端,前端如何展示?
  • laravel 更新数据
  • 工行退款短信图片
  • 月底资产负债表不平怎么找原因
  • 2021前端面试题校招
  • chatplus
  • 微信支付的开发公司
  • 个税专项附加扣除具体怎么操作
  • 报废产品需要入库吗
  • 对公账户和私人账户怎么区分
  • c语言中sizeof是啥意思
  • 企业的哪些支出不得列入成本费用原因
  • 生产自己的产品
  • 固定资产盘亏是营业外支出吗
  • 税控盘抄报税逾期怎么办
  • 商业承兑汇票怎么接收
  • 抵押贷款的评估费会计分录
  • 2020发票丢失新规
  • 固定资产报废的变卖收入计入哪个科目
  • 包装物报废收回残料
  • 免征印花税的6个项目
  • 管理会计与核算会计的区别
  • 酒店的经济性质是什么
  • 会计凭证销毁的地方
  • 结转未交增值税会计处理
  • sql server数据库查询语句
  • MYSQL数据库原理及应用
  • Windows下mysql5.7.18安装配置教程
  • sql中去掉结果为零的
  • ipv6文件
  • 怎么将windowsxp换成windows7
  • win7系统如何更改默认浏览器
  • xp电脑状态栏跑到左边了怎么设置回来
  • 如何解决叛逆心理
  • linux 多网卡配置
  • linux磁盘分区表
  • 没有了开始菜单怎么恢复
  • win7系统笔记本怎么调节电脑亮度
  • Win7系统如何清除流氓屏保
  • web直接打印
  • 使用Android Go的手机
  • 深入理解计算机系统
  • linux shell 循环语句
  • python开发软件教程
  • angularjs常用总结
  • node 回调函数
  • javascript教程完整版
  • 省市二级联动小组是什么
  • jquery如何解决跨域问题
  • python3 编码转换
  • 支部书记讲党课主题教育
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设