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();
    }
  • 相关阅读:
    2020-11-15日报博客-一周总结
    2020-11-13日报博客-周五
    2020-11-12日报博客-周四
    2020-11-11日报博客-周三
    掌握多态概念的关键点
    使用抽象类
    不允许继承的类
    动手实验:继承条件下的构造方法调用
    继承条件下类的访问权限
    在Java中实现继承
  • 原文地址:https://www.cnblogs.com/cccy0/p/11278168.html
Copyright © 2011-2022 走看看