zoukankan      html  css  js  c++  java
  • SpringBoot list查询方法

    SpringBoot中根据不同查询条件,获取list列表。
    @Component
    public class QuerySpecifications {}

    (1)根据商户,查询商品全部列表

    public Specification<Goods> fieldOwnerGoods(User owner) {
    return new Specification<Goods>() {
    @Override
    public Predicate toPredicate(Root<Goods> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
    return criteriaBuilder.equal(root.get("owner"), owner);
    }
    };
    }
    @Service 中使用方法
    public DataTablesOutput<Goods> list(DataTablesInput input, User owner) {
    DataTablesOutput<Goods> output = goodsRepository.findAll(input, querySpecifications.goodsForOwner(owner));
    log.debug("{}", output);
    return output;
    }


    (2)根据不同的支付状态进行查询,获取list列表
    PayState 支付状态-- 0:未支付,1:已支付,2:已取消
    way 订单来源--0:后台 1:手机端

    查询条件:(1)支付状态为1的 (2)支付状态为1,订单状态来源为0 (3)支付状态为2 (4)商户名称下的订单

    public Specification<com.ishare.football.model.Order> orderForOwner(User owner) {
    return new Specification<Order>() {
    @Override
    public Predicate toPredicate(Root<Order> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
    List<Predicate> predicates = Lists.newArrayList();
    Predicate predicate = criteriaBuilder.equal(root.get("payState"), 1);
    Predicate predicate6 = criteriaBuilder.equal(root.get("payState"), 2);
    Predicate predicate1 = criteriaBuilder.equal(root.get("payState"), 0);
    Predicate predicate2 = criteriaBuilder.equal(root.get("way"), 1);
    Predicate predicate3 = criteriaBuilder.and(predicate1, predicate2);
    Predicate predicate4 = criteriaBuilder.or(predicate, predicate3, predicate6);
    Predicate predicate5 = criteriaBuilder.equal(root.get("fieldSchedule").get("field").get("owner"), owner);
    return criteriaBuilder.and(predicate4, predicate5);
    }
    };
    }
    @Service 中使用方法
    public DataTablesOutput<Order> list(DataTablesInput input, User user) {
    input.addOrder("fieldSchedule.start",false);//排序方法,按照场地开始时间排序,false 倒叙,true 正序
    DataTablesOutput<Order> output = orderRepository.findAll(input, querySpecifications.orderForOwner(user));
    log.debug("{}", output);

    return output;
    }
    (3)多个列表,查询条件不同,放到一个方法里

    public Specification<com.ishare.football.model.Order> orderForOwnerAndPayState(User owner, int single) {
    return new Specification<Order>() {
    @Override
    public Predicate toPredicate(Root<Order> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
    List<Predicate> predicates = Lists.newArrayList();
    //single:0 待校验,1:已付款,2:已取消,3:待付款
    Predicate predicate = criteriaBuilder.equal(root.get("fieldSchedule").get("field").get("owner"), owner);
    if(single == 0){
    Predicate predicate1 = criteriaBuilder.equal(root.get("state"), 0);
    Predicate predicate2 = criteriaBuilder.equal(root.get("payState"), 1);
    Predicate predicate3 = criteriaBuilder.equal(root.get("way"), 0);
    Predicate predicate4 = criteriaBuilder.and(predicate1, predicate2,predicate3);
    return criteriaBuilder.and(predicate, predicate4 );
    }else if(single == 1){
    Predicate predicate1 = criteriaBuilder.equal(root.get("payState"), 1);
    return criteriaBuilder.and(predicate, predicate1 );

    }else if(single == 2){
    Predicate predicate1 = criteriaBuilder.equal(root.get("payState"), 2);
    return criteriaBuilder.and(predicate, predicate1 );

    }else if(single == 3){
    Predicate predicate1 = criteriaBuilder.equal(root.get("payState"), 0);
    Predicate predicate2 = criteriaBuilder.equal(root.get("way"), 1);
    Predicate predicate3 = criteriaBuilder.and(predicate1, predicate2);
    return criteriaBuilder.and(predicate, predicate3 );

    }else{
    return null;
    }

    /*return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));*/
    }
    };
    }
    @Service 中使用方法
    public DataTablesOutput<Order> listByPayState(DataTablesInput input, User owner, final int single) {
    input.addOrder("fieldSchedule.start",false);
    DataTablesOutput<Order> output = orderRepository.findAll(input, querySpecifications.orderForOwnerAndPayState(owner, single));
    log.debug("{}", output);
    return output;
    }
     
  • 相关阅读:
    CocoaPods
    Git
    LLVM
    浅入浅出数据结构(11)——简要介绍算法时间复杂度
    浅入浅出数据结构(10)——树的简介
    浅入浅出数据结构(8)——栈、后缀表达式与四则运算计算器
    浅入浅出数据结构(7)——特殊的表:队列与栈
    浅入浅出数据结构(6)——游标数组及其实现
    浅入浅出数据结构(5)——链表的操作
    浅入浅出数据结构(4)——线性表与链表
  • 原文地址:https://www.cnblogs.com/aliy-pan/p/5919808.html
Copyright © 2011-2022 走看看