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

  • 城市维护建设税计算公式
  • 进项税转出的金额含税吗
  • 兼职人员的差旅费怎么算
  • 上个月发票忘记开了怎么办
  • 发票该如何打印
  • 车船税不交怎么办
  • 增值税专用发票电子版
  • 税控盘抵减税额填在主表哪里
  • 现金流量表的期末数与资产负债表的货币资金吗
  • 应交税费怎么做分录
  • 跨年主营业务成本直接冲回可以吗
  • 年末发票
  • 收到去年的成本发票
  • 应付账款收不回,可否转营业外收入
  • 建筑安装项目要求有哪些
  • 转出上年的进项税额怎么做分录
  • 建筑企业城建税及教育附加税率
  • 对供应商的罚款怎么入账
  • 外聘人员需要扣个人所得税吗
  • 全额拨款事业单位工资都一样吗
  • 装修公司能开增值发票吗
  • 小规模纳税人设备税率
  • 车辆购置税固定资产
  • 2020年职工福利费扣除比例
  • 当月税负率怎么算
  • 个体户税务申报需要什么资料和手续
  • 误删的文件怎么撤回
  • php的运算符主要包括哪些?
  • 债务转换为资本
  • 增资导致的股权稀释涉税吗
  • 工业设备类型分为以下三类
  • 框架导入
  • 怎样退出快手粉丝团 已解决
  • flutter项目怎么运行
  • trainer 平替
  • python爬取网站数据毕业论文
  • 充值款如何领取红包
  • 期末结转会计分录模板
  • 报表按季度报是什么意思
  • 有问题的原始凭证是什么
  • 预算会计年末怎么结账
  • phpcms v9用户手册
  • SQLite中的WAL机制详细介绍
  • mongodb 权限设置
  • 预收的贷方余额表示什么
  • 增值税专用发票查询系统官方网站
  • 实收资本库存现金凭证怎么开
  • 公司欠款利息收据怎么写
  • 小规模纳税人什么时候用3%什么时候用5%
  • 六大类科目的借贷口诀余额怎么填
  • 暂估入库的材料领用时如何做账
  • 复利现值系数和复利终值系数
  • 企业会计制度对固定资产无入账价值怎么入账
  • 考试报名费都去哪了
  • 进项税额转出还要交税吗
  • 小企业会计准则适用于哪些企业
  • 普票与专票有什么区别报销
  • 小型微利企业所得税100到300
  • 期初数据根据总账还是明细账
  • 百旺金赋领回来的发票怎么读入
  • 本年利润怎么结账
  • mysql 随机io
  • win8全屏快捷键
  • win8电脑设置打不开怎么办
  • win7系统通知
  • windows下用CMD调用COM口
  • js domcontentloaded
  • android快捷键设置
  • shell 多个文件合并
  • linux文件目录管理命令
  • unityc#打不开
  • ftp下载工具能自动登录ftp服务器
  • pygame如何加载图片
  • android下载文件保存到本地
  • android 开源
  • htmlcssjavascript入门经典pdf
  • jquery原理和实现步骤
  • 使用jquery实现的项目
  • 重庆税务局发票作废
  • 石油产品消费税征收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设