Javaの:休止ダイナミックページング+ + +カスタムフィールドカスタムエンティティクラスのお問い合わせ

//组合查询
公衆リスト<ListBookDTO> listSetDSL(PublishingHouse publishingHouse、整数minDiscount、整数maxDiscount、整数minStocks、整数maxStocks、整数ページ、整数のpageSize){
CriteriaBuilderビルダー= em.getCriteriaBuilder()。
//指明返回类型
CriteriaQuery <ListBookDTO> criteriaQuery = builder.createQuery(ListBookDTO.class)。
ルート<ブック>ルート= criteriaQuery.from(Book.class)。
//动态条件
一覧<述語> PLIST =新しいArrayListを<>();
(もし!publishingHouse = NULL){
pList.add(builder.isNotNull(root.get( "publishingHouse")));
pList.add(builder.equal(root.get( "publishingHouse")として(PublishingHouse.class)、publishingHouse)。)。


pList.add(builder.isNotNull(root.get( "割引")));
pList.add(builder.greaterThan(root.get( "割引")、minDiscount));
}
IF(!minDiscount == NULL && maxDiscount = NULL){
pList.add(builder.isNotNull(root.get( "割引")))。
pList.add(builder.lessThan(root.get( "割引")、maxDiscount));
}
IF(!minStocks = NULL){
pList.add(builder.isNotNull(root.get( "株式")))。
pList.add(builder.greaterThan(root.get( "株式")、minStocks));
}
IF(!maxStocks = NULL){
pList.add(builder.isNotNull(root.get( "株式")))。
pList.add(builder.lessThan(root.get(」

述語[]述語=新しい述語[pList.size()]。
criteriaQuery.where(builder.and(pList.toArray(述語)))。//条件
criteriaQuery.orderBy(builder.desc(root.get( "ID"))); //排序
criteriaQuery.select(builder.construct(ListBookDTO.class、root.get( "ID")、root.get( "名前")、root.get( "publishingHouse")));
TypedQuery <ListBookDTO>クエリ= em.createQuery(criteriaQuery)。
query.setFirstResult(ページ- 1).setMaxResults(pageSizeを); //分页
)(query.getResultListを返します。
}

おすすめ

転載: www.cnblogs.com/cccy0/p/11278168.html