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. mysql存储过程学习

    一.存储过程的创建 语法: CREATE PROCEDURE sp_name (参数)合法的SQL语句 mysql> delimiter // mysql> CREATE PROCEDUR ...

  2. Collection接口

    Collection接口所定义的方法: clear:清空 retainAll 求一个Collection和另一个 Collection的交集. object[] toArray()  把里面的各个对象 ...

  3. ACM/ICPC 之 最小割转网络流(POJ3469)

    重点:构图 //最小割转网络流 //邻接表+Dinic //Time:5797Ms Memory:6192K #include<iostream> #include<cstring& ...

  4. excel删除重复数据

    1.点击任意单元格2.选择菜单栏的数据-->删除重复项 -->自定义重复

  5. Linux之tomcat日志管理

    tomcat 的日志输出catalina.out,变大,可使用下面方式解决. cronolog. http://blog.csdn.net/huang_xw/article/details/61942 ...

  6. 在hive中遇到的错误

    1:如果在将文件导入到hive表时,查询结果为null(下图) 这个是因为在创建表的时候没有指定列分隔符,hive的默认分隔符是ctrl+a(/u0001)   2.当我复制好几行sql到hive命令 ...

  7. Oracle 11g RAC停止和启动步骤

    关闭前备份控制文件/参数文件:   sqlplus / as sysdba alter database backup controlfile to '/home/oracle/control.ctl ...

  8. 常见开发需求之angular上拉加载更多

    需求   移动端使用angular实现上拉加载更多的条目,这个需求比较常见,网上的插件改动起来比较麻烦,不如自己写一个最适合,以前有同事写了一个,奈何bug太多,后来改分页了,我们产品说什么都让做,没 ...

  9. flexBox布局 -- 兼容性

    //中间留空,两侧靠边,多行显示,每行3个,一个li的宽度是30%,最后一行,如果是两个的时候会出现异常布局,可以对最后一行的最后一个li进行right:35%,android4.4以上才支持, 所以 ...

  10. jQuery插件(多级菜单)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...