gpt4 book ai didi

Spring Boot JPA Like 查询

转载 作者:行者123 更新时间:2023-12-04 07:16:39 24 4
gpt4 key购买 nike

我正在尝试为我的用户表实现搜索功能。我想创建一个 JpaRepository 方法,它会给我一个可分页的用户列表,这些用户的电子邮件包含给定的字符串,我该怎么做?
这是我试过的
存储库:

    @Repository
public interface UserRepository extends JpaRepository<User, Long> {
Page<User> findByEmailContaining(String email, Pageable pageable);
}
服务:
public Page<User> findPaginatedEmail(int pageNo, int pageSize, String sortField, String sortDirection, String text) {
Sort sort = sortDirection.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortField).ascending() :
Sort.by(sortField).descending();
Pageable pageable = PageRequest.of(pageNo - 1, pageSize, sort);
return this.userRepository.findByEmailContaining(text, pageable);
}
有时它可以工作并填充我的表格,有时它不会。问题是什么?我该如何实现?
它工作正常,但一段时间后它只是打破了我不知道为什么,然后它不会找到任何东西

最佳答案

方法有很多,如果这里使用 SimpleJpaRepository 调用带有参数 Specification 和 Pageable 的 findAll 方法,返回 Page 接口(interface)。

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.data.web.SortDefault;

@GetMapping(path = "/pageable")
public Page<?> getCountries(@RequestParam(name = "countryName", required = false) String countryName,
@PageableDefault(page = 0, size = 20) @SortDefault.SortDefaults({
@SortDefault(sort = "id", direction = Sort.Direction.ASC) }) Pageable pageable)
{

}
我的存储库界面:
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;


public interface CountryRepository extends JpaRepository<Country, Long>, JpaSpecificationExecutor<Country> {
}
如果有动态查询,我使用:
org.springframework.data.jpa.domain.Specification<T>
Spring 数据 jpa :
org.springframework.data.jpa.repository.JpaSpecificationExecutor<T>

Page<T> findAll(@Nullable Specification<T> spec, Pageable pageable);


org.springframework.data.jpa.repository.support.SimpleJpaRepository<T, ID> implements JpaRepositoryImplementation<T, ID>

public Page<T> findAll(@Nullable Specification<T> spec, Pageable pageable) {

TypedQuery<T> query = getQuery(spec, pageable);
return isUnpaged(pageable) ? new PageImpl<T>(query.getResultList())
: readPage(query, getDomainClass(), pageable, spec);
}

the repository CountryRepository calling the method findAll(@NullableSpecification spec, Pageable pageable) returns the Page

关于Spring Boot JPA Like 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68724997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com