栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot-Spring Data Jpa - 复杂业务查询 Specification

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot-Spring Data Jpa - 复杂业务查询 Specification

SpringBoot-Spring Data Jpa - 复杂业务查询 Specification
  • Specification 前言

应对Spring Data Jpa 复杂逻辑查询而生的条件对象

  • Specification 构建对象
    • Object泛型描述,针对业务逻辑构建的条件对象,通常与Repository层泛型一直
    • and 与 or 就是创建的逻辑 ‘与’、‘或’ 对象,表示构建的条件对象为逻辑 ‘与’、‘或’ 关系
Specification and = Specifications.and().build();
Specification or = Specifications.or().build(); 
  • Specification 编写逻辑语句
    • 一般代码结构分为三个部分
      • 断言,为 true 则促发当前逻辑
      • 实体对象中的属性名称,会根据实体对象直接映射表关系,建议反射写法更好,代码容错性、解耦性更高
      • 传入的条件,例子中逻辑语句以 ‘between’ 为例子,必须满足参数 ‘111L’ 与 ‘assembly.getOsVersionId()’ 之间才匹配,  ‘between’ 一般用于时间查询,eq 、like 等查询这里均需要一个参数即可,多个条件以数组的形式入参
    • like 模糊查询需要更灵活,需要手动指定 ‘%’ 的位置,例子中以前后均模糊匹配为例子
Specification build = Specifications.and()
				.between(null != assembly.getOsVersionId(),
						"osVersionId", 
						111L,
						assembly.getOsVersionId())
				.build();

.findAll(build);

---------------------------------------------------------------------------------------

Specification build = Specifications.and()
				.like(StringUtils.isNotBlank(assembly.getAssemblyName()),
						"%assemblyName%",
						assembly.getAssemblyName())
				.build();

.findAll(build);

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号