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;
}
 

SpringBoot list查询方法的更多相关文章

  1. tp5 中 model 的查询方法

    实例化模型后调用查询方法,可以写任何想要的查询(推荐) public function select(){ $user = model('User'); $data = $user -> ) - ...

  2. 【Java EE 学习 17 下】【数据库导出到Excel】【多条件查询方法】

    一.导出到Excel 1.使用DatabaseMetaData分析数据库的数据结构和相关信息. (1)测试得到所有数据库名: private static DataSource ds=DataSour ...

  3. <五>JDBC_利用反射及JDBC元数据编写通用的查询方法

    此类针对javaBean类写了一个通用的查询方法,List<javaBean> 通用查询更新中...:通过学习,深刻体会到学会反射就等于掌握了java基础的半壁江山! 一.使用JDBC驱动 ...

  4. Thinkphp回顾之(四)查询方法深入学习

    本次讲的查询方法主要有:表达式查询,模糊查询,between语句,in语句,区间查询,统计数据,普通方式查询,但大多数都只是引入数组而已,明白了第一个,其他的也就差不多全明白了,唯一要注意的是在后台中 ...

  5. MyBaits一对一的查询方法

    MyBaits一对一的查询方法 一:表数据与表结构 CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name ) ); CRE ...

  6. php标签云制作——数据表的结构和查询方法

    1.数据表的结构: 创建建两张数据表,结构如下: 标签tag表: 文章mood表: 其中mood表中的tag字段,以tag表的id字段+“,”+tag表的id字段, 2.查询方法: 例如:如果需要某篇 ...

  7. JAVA 模糊查询方法

    当我们需要开发一个方法用来查询数据库的时候,往往会遇到这样一个问题:就是不知道用户到底会输入什么条件,那么怎么样处理sql语句才能让我们开发的方法不管接受到什么样的条件都可以正常工作呢?这时where ...

  8. 使用ResultSet,写了一个通用的查询方法

    此方法很烂,以后优化 /** * 通用的查询方法:SELECT */ @SuppressWarnings({ "unchecked", "rawtypes" } ...

  9. YII AR查询方法

    ActiveRecord类文档:http://www.yiiframework.com/doc/guide/1.1/en/database.ar 对于一个Model Post 有如下的4中查询方法,返 ...

随机推荐

  1. 【GoLang】golang 最佳实践汇总

    最佳实践 1 包管理 1.1 使用包管理对Golang项目进行管理,如:godep/vendor等工具 1.2 main/init函数使用,init函数参考python 1.2.1 main-> ...

  2. Microsoft.AspNet.SignalR 2.2

    Nuget :http://www.nuget.org/packages/Microsoft.AspNet.SignalR/ What is SignalR? ASP.NET SignalR is a ...

  3. ACM-ICPC退役选手的发言——满满的正能量(短视频)

    这是我在北京林业大学ACM-ICPC竞赛说明会上发言的录像 希望能激励大家在奋斗的道路上披荆斩棘,勇往直前!

  4. 二、CoreAnimation之寄宿图详解

    在之前的图层树中我们知道,可以使用CALayer对象创建一些有背景颜色的图层,其实使用CALayer,不仅可以利用其展示背景颜色,还可以展示图片.而这些展示内容,其实就是CALayer的寄宿图.这一节 ...

  5. Huffman树实现_详细注释

    //最优二叉树 #include <iostream> #include <iomanip> using namespace std; //定义结点类型 //[weight | ...

  6. 以前用SQL实现的机构职能树,再看看

    DECLARE CNT NUMBER; TMP ); vtmp ); ltmp1 ); ltmp2 ); ltmp3 ); ltmp4 ); NTMP NUMBER; CURSOR CSR_TEST ...

  7. QA is more than Testing

    前话:在测试这个行业做了挺多年了,都快忘记自己大学的专业是国际经济与贸易,一个选择可能就决定了一生的方向. 但既然做了选择,就走下去. ----------------- 在这么多年的工作中,测试始终 ...

  8. Ios8,Xcode6下 设置Launch Image 启动图片

    1x--320*480  2x--640*960  Retina 4--640*1136  Retina HD5.5--621*1104   Retina HD4.7--375*667

  9. Leetcode Merge Intervals

    Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...

  10. 【转】【Raspberry Pi】Unix NetWork Programming:配置unp.h头文件环境

    一.初衷 近期正在做网络计算编程的作业.要求平台为unix/linux,想着Raspberry Pi装的Debian系统也是Linux改的,也应该能够勉强用着,所以就用它来做作业了! 二.说明 先把环 ...