springData jpa多条件查询重写Specification的toPredicate方法

本文介绍了如何使用SpringData JPA的Specification接口进行多条件动态查询。通过CriteriaQuery、Root和CriteriaBuilder来构建复杂的查询条件,并通过重写toPredicate方法实现动态SQL生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jpa2.0支持了Criteria查询,对应的接口是JpaSpecificationExecutor,我们可以利用Criteria实现动态查询

我们查看JpaSpecificationExecutor接口,发现这个接口里面的方法都需要Specification,JpaSpecificationExecutor接口方法代码如下:

T findOne(Specification<T> spec);
List<T> findAll(Specification<T> spec);
Page<T> findAll(Specification<T> spec, Pageable pageable);
List<T> findAll(Specification<T> spec, Sort sort);
long count(Specification<T> spec);

然后Specification却只有一个方法:

Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb);

参数解释:
CriteriaQuery接口:代表一个specific的顶层查询对象,它包含着查询的各个部分,比如:select 、from、where、group by、order by等

Root接口:代表Criteria查询的根对象,Criteria查询的查询根定义了实体类型,能为将来导航获得想要的结果,它与SQL查询中的FROM子句类似

CriteriaBuilder是Predicate实例的工厂,通过调用Criteria

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值