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();
    }
  • 相关阅读:
    rails 给类添加属性
    workflow engine Ruote初体验之二(通用属性)
    workflow engine Ruote初体验之一(概念)
    workflow engine Ruote 安装
    文字编码
    C# 制作Windows服务安装包
    Ruby on rails初体验(三)
    18-语言入门-18-鸡兔同笼
    17-语言入门-17-笨小熊
    16-语言入门-16-谁获得了最高奖学金
  • 原文地址:https://www.cnblogs.com/cccy0/p/11278168.html
Copyright © 2011-2022 走看看