zoukankan      html  css  js  c++  java
  • Java : Hibernate 动态+分页+自定义字段+自定义实体类查询

    // 组合查询
    public List<ListBookDTO> listSetDSL(PublishingHouse publishingHouse,Integer minDiscount, Integer maxDiscount, Integer minStocks, Integer maxStocks, Integer page, Integer pageSize) {
    CriteriaBuilder builder = em.getCriteriaBuilder();
    // 指明返回类型
    CriteriaQuery<ListBookDTO> criteriaQuery = builder.createQuery(ListBookDTO.class);
    Root<Book> root = criteriaQuery.from(Book.class);
    // 动态条件
    List<Predicate> pList = new ArrayList<>();
    if (publishingHouse != null) {
    pList.add(builder.isNotNull(root.get("publishingHouse")));
    pList.add(builder.equal(root.get("publishingHouse").as(PublishingHouse.class), publishingHouse));
    }
    if (minDiscount != null) {
    pList.add(builder.isNotNull(root.get("discount")));
    pList.add(builder.greaterThan(root.get("discount"), minDiscount));
    }
    if (minDiscount == null && maxDiscount != null) {
    pList.add(builder.isNotNull(root.get("discount")));
    pList.add(builder.lessThan(root.get("discount"), maxDiscount));
    }
    if (minStocks != null) {
    pList.add(builder.isNotNull(root.get("stocks")));
    pList.add(builder.greaterThan(root.get("stocks"), minStocks));
    }
    if (maxStocks != null) {
    pList.add(builder.isNotNull(root.get("stocks")));
    pList.add(builder.lessThan(root.get("stocks"), maxStocks));
    }
    Predicate[] predicates = new Predicate[pList.size()];
    criteriaQuery.where(builder.and(pList.toArray(predicates))); // 条件
    criteriaQuery.orderBy(builder.desc(root.get("id"))); // 排序
    criteriaQuery.select(builder.construct(ListBookDTO.class,root.get("id"), root.get("name"), root.get("publishingHouse")));
    TypedQuery<ListBookDTO> query = em.createQuery(criteriaQuery);
    query.setFirstResult(page - 1).setMaxResults(pageSize); // 分页
    return query.getResultList();
    }
  • 相关阅读:
    汤圆只有汤没有圆了,过了过了
    CommonJS
    What is Socket.IO?
    白话PGP/GPG
    汤圆只有汤没有圆了,过了过了
    npm for nodejs
    Running Daemontools under Ubuntu 8.10
    ubuntu seahouse
    node.js入门
    my blog zen :分享所学,backup一切~
  • 原文地址:https://www.cnblogs.com/cccy0/p/11278168.html
Copyright © 2011-2022 走看看