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

  • 网络贷款需要交钱吗
  • 劳务报酬个人所得税税率表
  • 捐赠支出需要什么手续
  • 收回个人社会保险费是否可以冲红管理费用
  • 小规模纳税人未开票收入如何填申报表
  • 个人所得税专项扣除子女教育标准
  • 存货损失
  • 呆账的处理
  • 让渡资产使用权收入的确认条件
  • 冲借款的凭证怎么做
  • 没收土地竞买保证金政策法律
  • 未认证发票进项税分录
  • 银行取现怎么取
  • 购买的包装物用什么消毒
  • 收到费用怎么写分录
  • 公司委托其他公司为员工代缴社保公积金
  • 买商品送购物券合法吗
  • 劳务费发票税率是多少
  • 地税三方协议是什么意思
  • 应收账款减值准备计提比例
  • 增值税普通发票可以抵扣吗
  • 销售收入里面包括免税收入呢
  • 所得税费用什么时候结转
  • 增值税转型后入账价值
  • led电子屏税收编码
  • 出口退税操作步骤
  • 为员工购买的团员保险
  • 系统之家哪个系统比较好用
  • php教程零基础入门
  • w10如何删除微软拼音
  • 购入股票佣金会减少吗
  • 工程施工与工程结算会计科目
  • 企业销售货物收到价款5000元这笔经济业务属于
  • Create OpenAI Account的教程来啦,赶紧学习吧!
  • 审稿意见范例
  • 搭建小技巧
  • php在图片上添加文字
  • php yii
  • 转出未交增值税最终怎么转平
  • python爬虫中数据接口的含义
  • 法人想从公司户提钱自己用有事吗
  • 企业年报股东出资信息
  • 个人所得税申报截止时间
  • 交税交多了如何申请退税
  • 一般纳税人在任何情形下都可以领购使用增值税专用发票
  • 项目竣工决算审查
  • sqlserver并发怎么处理
  • sql的应用
  • db2获取当前年月日
  • 帐务处理是指什么工作
  • 成本法和权益法的相同点
  • 出口货物退免税的管理规定
  • 待处理财产损溢借方是增还是减
  • 进项税额不允许抵扣
  • 电费发票未到怎么入账
  • 相同的商品附带不同的赠品发布
  • 贴现费用分录
  • 取得航空公司收票的票据
  • 关于其他应付款的问题
  • 退回的个税手续费如何账务处理
  • 应收账款坏账的说明
  • 长期待摊费用如何做分录
  • 原始凭证基本要求是什么
  • mysql中自定义函数属于那个
  • win8电脑设置
  • win8 升级 win10
  • win10一年更新几次
  • win7操作技巧
  • 表单验证插件
  • vue 瀑布流
  • js中数组操作
  • shell脚本调用php方法
  • bat修改注册表数值
  • 利用python进行爬虫
  • python字典键值对个数
  • js给input添加属性
  • 地方税务局稽查局卢永胜
  • 成都税务局发票查询
  • 河南省地方税务局公告2011年第10号
  • 兼营增值税应税项目和免税项目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设