使用SpecificationBuilder简化Spring Data Jpa的动态查询

本文介绍了如何利用SpecificationBuilder解决Spring Data Jpa动态查询时代码冗长的问题。通过示例展示了如何构建一个支持多种条件(如精确、模糊、范围、批量查询)的查询条件对象,并用一行代码生成Specification,极大地减少了样板代码。同时,文章还提供了使用指南,解释了注解的使用方式,如@Like、@GreaterThanEqual等,帮助读者理解和应用这一工具。
摘要由CSDN通过智能技术生成

SpecificationBuilder

源码见Github

现有问题

假设有一个domain,里面有如下几个字段:
* Long id
* String name
* Integer age
* String school
* LocalDateTime birthday

如果我们要做一个支持按照标识(精确),年龄(精确),学校(批量),生日(区间),和名字(模糊)进行匹配的动态查询,需要构建一个包含如下字段的condition

  • Long id
  • String name
  • Integer age
  • List schools
  • LocalDateTime birthdayStart
  • LocalDateTime birthdayEnd

之后我们需要编写一段冗长的代码去构建Specification对象

Specification specification = new Specification<User>() {
        @Nullable
        @Override
        public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {
            L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值