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

  • opporeno4pro有双扬声器吗(oppo reno4pro双扬声器怎么开关)

    opporeno4pro有双扬声器吗(oppo reno4pro双扬声器怎么开关)

  • 144hz显示器有必要吗(144hz显示器必须开垂直)

    144hz显示器有必要吗(144hz显示器必须开垂直)

  • g5420相当于i几(g5420相当于i几代i5)

    g5420相当于i几(g5420相当于i几代i5)

  • 电脑d盘在哪打开(电脑上的d盘在哪)

    电脑d盘在哪打开(电脑上的d盘在哪)

  • 转转申诉解封教程(转转申诉解封教程视频)

    转转申诉解封教程(转转申诉解封教程视频)

  • 华为畅联通话是用流量还是话费(华为畅联通讯)

    华为畅联通话是用流量还是话费(华为畅联通讯)

  • 抖音如何给主播点赞(抖音如何给主播开会员)

    抖音如何给主播点赞(抖音如何给主播开会员)

  • 钒电池与锂电池的对比(钒电池与锂电池対比)

    钒电池与锂电池的对比(钒电池与锂电池対比)

  • 电视网速慢是什么原因(电视网速慢是怎么回事)

    电视网速慢是什么原因(电视网速慢是怎么回事)

  • 不要在线解压是什么意思

    不要在线解压是什么意思

  • 华为不用锁屏键怎么锁屏(华为不用锁屏键关机)

    华为不用锁屏键怎么锁屏(华为不用锁屏键关机)

  • 大众点评app里d币在哪看(大众点评一下)

    大众点评app里d币在哪看(大众点评一下)

  • 荣耀20支持人脸解锁吗(荣耀20支持人脸识别吗)

    荣耀20支持人脸解锁吗(荣耀20支持人脸识别吗)

  • 安居客经纪人怎么注销(安居客经纪人怎么赚钱)

    安居客经纪人怎么注销(安居客经纪人怎么赚钱)

  • 抖音怎样退出主播粉丝团(抖音界面怎么退出)

    抖音怎样退出主播粉丝团(抖音界面怎么退出)

  • win10网络重置后果(win10网络重置后会怎么样)

    win10网络重置后果(win10网络重置后会怎么样)

  • 小米ai音箱需要关闭吗(小米ai音箱必须要连wifi吗)

    小米ai音箱需要关闭吗(小米ai音箱必须要连wifi吗)

  • x23通话录音过怎么找(手机通话录音录好了在哪里找)

    x23通话录音过怎么找(手机通话录音录好了在哪里找)

  • 苹果手机wifi不能正常使用怎么办(苹果手机wifi不能用)

    苹果手机wifi不能正常使用怎么办(苹果手机wifi不能用)

  • xs有指纹识别吗(苹果xs到底有没有指纹)

    xs有指纹识别吗(苹果xs到底有没有指纹)

  • 微信壁纸怎么设置全屏(微信壁纸怎么设置全部一样)

    微信壁纸怎么设置全屏(微信壁纸怎么设置全部一样)

  • Win10更新KB5004945更新失败,错误代码0x800f0984的解决办法(win10更新kb5006670)

    Win10更新KB5004945更新失败,错误代码0x800f0984的解决办法(win10更新kb5006670)

  • Vue3中使用pinia(vue3中使用require)

    Vue3中使用pinia(vue3中使用require)

  • ChatGPT创造的未来:150+个Prompts助你玩转新世界(创造未来这首歌是谁)

    ChatGPT创造的未来:150+个Prompts助你玩转新世界(创造未来这首歌是谁)

  • phpcms hash验证失败怎么办(php验证码代码怎么写)

    phpcms hash验证失败怎么办(php验证码代码怎么写)

  • 公司支付的房租押金怎么入账
  • 一般纳税人哪些可以开3%的发票吗
  • 个人经营所得税起征点是多少
  • 商业折扣和现金折扣的入账金额
  • 以前年度费用退回怎么做账
  • 企业所有者权益科目有哪些
  • 服务发票是增值税发票吗
  • 赠送客户的产品计入销售费用的二级科目
  • 2019年小微企业六税两费减免
  • 公司哪些支出不影响报表净利润总额
  • 资源税折算后计提怎么算
  • 公司用股东的钱交税吗
  • 没收不还
  • 伙食支出设立的明细
  • 企业员工无偿使用合法吗
  • 企业转让股权取得的收入征税吗
  • 消费税组成计税价
  • 预收房租款如何入账
  • 水利基金按含税还是不含税申报
  • 汇总记账凭证账务处理程序的优点包括
  • 电商公司购买拍照违法吗
  • 应发工资包含
  • 高新企业最新政策2020
  • 科研费用拨款如何记账?
  • 公司名下的车怎么上牌
  • 王者荣耀中吕布的克星
  • 一个公司主营业务收入有多项
  • 固定资产不入账是谁的责任
  • php数组清空
  • 项目设计费怎么算
  • 企业所得税教育经费列支范围
  • Vue:element-ui中表格过长内容隐藏显示
  • 增值税纳税申报表在哪里打印
  • node.js解决跨域请求
  • 小规模企业逾期是微信扫码付款吗
  • java基础变量字节
  • 汽车上牌照的费用计入什么会计科目
  • phpcms视频教程
  • 织梦怎么用
  • 取得剧本使用费怎么做账
  • 关联企业借款费用
  • 车船税和保险在一张发票怎么做账
  • 进项税多记了怎么调账
  • 一个公户从农业银行开户
  • 办理产权证费用明细
  • 转让不动产怎么计算增值税
  • 应收账款属于会计科目吗
  • 专项应付款支出的账务处理
  • 停产工人工资计入哪个科目
  • 汇算清缴晚了几天
  • 主营业务成本如何做分录
  • 微信转账和支付宝转账哪个更安全
  • 公司里的废品的处理一般是谁负责
  • 会计所说的内账外账
  • 残疾人保障金怎么申报
  • 账户的基本结构不包括的内容有
  • sql时间格式化大全
  • windos基于
  • 华硕主板如何刷系统
  • win10找不到打印机驱动
  • linux安装syslog
  • 安装xps虚拟打印机
  • mac使用命令
  • VMware虚拟机下载
  • linux deploy 无root
  • find命令支持哪些查找方式
  • js编程代码
  • node.js快速入门
  • 《噩梦》
  • javascript 操作css
  • javascript怎么做
  • Unity-DF 2048界面
  • js中如何弹出提示框
  • 即将发布的新能源汽车
  • jQuery 3.0 的 setter和getter 模式详解
  • 爬虫如何识别验证码
  • javascript学习指南
  • 装修时候需要交什么费
  • 国税备案的作用是什么
  • 税务备案表银行留存
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设