Java 使用JPQL和布尔表达式分页
我不熟悉分页,我想为我的JPQL查询分页,但我不能这样做,请查找以下类: 服务:Java 使用JPQL和布尔表达式分页,java,rest,pagination,jpql,querydsl,Java,Rest,Pagination,Jpql,Querydsl,我不熟悉分页,我想为我的JPQL查询分页,但我不能这样做,请查找以下类: 服务: public List<Company> getCompanies(BooleanExpression predicate, Pageable pageRequest){ return companyRepositoryImpl.getCompany(predicate, pageRequest); } public List getcompanys(布尔表达式谓词,可分页的分页请求){ re
public List<Company> getCompanies(BooleanExpression predicate, Pageable pageRequest){
return companyRepositoryImpl.getCompany(predicate, pageRequest);
}
public List getcompanys(布尔表达式谓词,可分页的分页请求){
return companyRepositoryImpl.getCompany(谓词,pageRequest);
}
存储库:
@存储库
公共类公司repositoryimpl{
@PersistenceContext
private EntityManager entityManager;
public <T> List<T> getCompany(BooleanExpression finalExpression, Pageable pageRequest) {
int pageNumber = pageRequest.getPageNumber();
int pageSize = pageRequest.getPageSize();
long pageOffset = pageRequest.getOffset();
Sort sortValue = pageRequest.getSort();
// String str = sortValue.toString();
QCompany comp = QCompany.company;
QCompanyAddress qCompanyAddress = QCompanyAddress.companyAddress;
final JPQLQuery<QCompany> jpqlQuery = new JPAQuery(entityManager);
OrderSpecifier<?> o = qCompanyAddress.addressLine1.desc();
JPQLQuery<QCompany> query = jpqlQuery.from(comp).leftJoin(qCompanyAddress)
.on(comp.id.eq(qCompanyAddress.company.id)
.and(qCompanyAddress.statusActiveSwitch.eq(SwitchEnum.Y))
.and(qCompanyAddress.addressType.addressTypeCode.eq("1")))
.where(finalExpression).orderBy(o).limit(20);
QueryResults<QCompany> fetchResults = query.fetchResults();
List<QCompany> results = fetchResults.getResults();
fetchResults.getTotal();
return (List<T>) results;
}
@PersistenceContext
私人实体管理者实体管理者;
public List getCompany(Boolean Expression finalExpression、Pageable pageRequest){
int pageNumber=pageRequest.getPageNumber();
int pageSize=pageRequest.getPageSize();
long pageOffset=pageRequest.getOffset();
Sort-sortValue=pageRequest.getSort();
//字符串str=sortValue.toString();
QCompany comp=QCompany.company;
QCompanyAddress QCompanyAddress=QCompanyAddress.companyAddress;
最终JPQLQuery JPQLQuery=新的JPAQuery(entityManager);
OrderSpecifier o=qCompanyAddress.addressLine1.desc();
JPQLQuery query=JPQLQuery.from(comp).leftJoin(qCompanyAddress)
.on(公司id.eq(qCompanyAddress.company.id)
和(qCompanyAddress.statusActiveSwitch.eq(SwitchEnum.Y))
和(qCompanyAddress.addressType.addressTypeCode.eq(“1”))
其中(最终压力)。订购人(o)。限额(20);
QueryResults fetchResults=query.fetchResults();
List results=fetchResults.getResults();
fetchResults.getTotal();
返回(列表)结果;
}
在存储库中,我有可分页对象,但我不知道如何将其与JPQL一起使用。非常感谢您的帮助。要按照定义的可分页对象加载数据,您必须从
查询定义中删除限制(20)
。然后,您可以执行以下操作:
List<Company> companies = getQuerydsl()
.applyPagination(pageable, query)
.fetch();
List companys=getQuerydsl()
.applyPagination(可分页,查询)
.fetch();
您可以返回列表
如果您想返回页面而不是列表,那么您必须进行如下更改-
long total = query.fetchCount();
List<Company> companies = getQuerydsl()
.applyPagination(pageable, query)
.fetch();
return new PageImpl<>(companies, pageable, total);
long total=query.fetchCount();
上市公司=getQuerydsl()
.applyPagination(可分页,查询)
.fetch();
返回新的PageImpl(公司、可分页、总计);
我希望,这将对您有所帮助。要按照定义的可分页对象加载数据,您必须从查询定义中删除限制(20)
。然后,您可以执行以下操作:
List<Company> companies = getQuerydsl()
.applyPagination(pageable, query)
.fetch();
List companys=getQuerydsl()
.applyPagination(可分页,查询)
.fetch();
您可以返回列表
如果您想返回页面而不是列表,那么您必须进行如下更改-
long total = query.fetchCount();
List<Company> companies = getQuerydsl()
.applyPagination(pageable, query)
.fetch();
return new PageImpl<>(companies, pageable, total);
long total=query.fetchCount();
上市公司=getQuerydsl()
.applyPagination(可分页,查询)
.fetch();
返回新的PageImpl(公司、可分页、总计);
我希望,这会对你有所帮助