JpaRepository模糊查询
时间: 2024-09-21 15:10:30 浏览: 69
JpaRepository是Spring Data JPA库提供的一种高级接口,它为开发者操作数据库提供了模板方法,简化了Repository的编写。对于模糊查询,JpaRepository并没有直接提供模糊匹配的API,但你可以通过自定义SQL查询或者利用JPA的`Specification`来进行。
如果你想做模糊查询,通常的做法是在方法名上添加`LIKE`关键字,例如查找名称包含特定字符的记录:
```java
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByLastName(String lastNameLike); // 查询姓氏包含指定字符的用户
}
// 使用
List<User> users = userRepository.findByLastName("%smith%");
```
如果你需要更复杂的查询条件,可以创建一个`Specification`对象,它是一个表达式式接口,用于构造查询条件:
```java
import org.springframework.data.jpa.domain.Specification;
public class UserQuerySpecification implements Specification<User> {
private final String lastNameLike;
public UserQuerySpecification(String lastNameLike) {
this.lastNameLike = "%" + lastNameLike + "%";
}
@Override
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
return builder.like(root.get("lastName"), lastNameLike);
}
}
// 使用
List<User> users = userRepository.findAll(new UserQuerySpecification("smith"));
```
阅读全文