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;
    }
     
  • 相关阅读:
    ASP.NET MVC 实现二级域名(泛域名)
    linq to sql 语句基本查询(3):Select和Count/Sum/Min/Max/Avg
    DataSet用法详细
    MVC中返回Json的几种声明方式
    利用索引提高SQL Server数据处理的效率
    嫁给以下十种男人的女人离“地狱”就不远了
    Thinkpad x200 X201拆机换风扇教程 实图
    笔记一则
    冬季谨防胃病复发 放松精神吃温热食物
    就是这样给X200加内存的(申精)
  • 原文地址:https://www.cnblogs.com/aliy-pan/p/5919808.html
Copyright © 2011-2022 走看看