使用springboot做多条件查询
时间: 2023-11-19 08:02:41 浏览: 175
多条件查询
在使用Spring Boot进行多条件查询时,可以使用Spring Data JPA提供的Specification类来实现动态查询条件。
首先,在实体类对应的Repository接口中继承JpaSpecificationExecutor接口,例如:
```java
@Repository
public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> {
// ...
}
```
然后,创建一个Specification实现类,通过传入的参数动态构建查询条件,例如:
```java
public class UserSpecification {
public static Specification<User> findByCondition(Long id, String name, Integer age) {
return (root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
if (id != null) {
predicates.add(cb.equal(root.get("id"), id));
}
if (name != null) {
predicates.add(cb.like(root.get("name"), "%" + name + "%"));
}
if (age != null) {
predicates.add(cb.equal(root.get("age"), age));
}
return cb.and(predicates.toArray(new Predicate[0]));
};
}
}
```
最后,在Service层中调用Repository的findAll方法,传入构建好的Specification对象作为查询条件,例如:
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> findByCondition(Long id, String name, Integer age) {
Specification<User> spec = UserSpecification.findByCondition(id, name, age);
return userRepository.findAll(spec);
}
}
```
这样,就可以根据传入的参数动态构建查询条件进行多条件查询了。
阅读全文