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();
    }
  • 相关阅读:
    Python partition() 方法
    汽车车灯灯具系统(下)
    汽车车灯灯具系统(上)
    语义和边缘:从噪声和符号中学习
    AI解决方案:边缘计算和GPU加速平台
    GPU与显卡
    图像处理 100 问!!
    匹配算法:局部结构保留
    图像拼接技术
    SLAM的通用框架:GSLAM
  • 原文地址:https://www.cnblogs.com/cccy0/p/11278168.html
Copyright © 2011-2022 走看看