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;
}
SpringBoot list查询方法的更多相关文章
- tp5 中 model 的查询方法
实例化模型后调用查询方法,可以写任何想要的查询(推荐) public function select(){ $user = model('User'); $data = $user -> ) - ...
- 【Java EE 学习 17 下】【数据库导出到Excel】【多条件查询方法】
一.导出到Excel 1.使用DatabaseMetaData分析数据库的数据结构和相关信息. (1)测试得到所有数据库名: private static DataSource ds=DataSour ...
- <五>JDBC_利用反射及JDBC元数据编写通用的查询方法
此类针对javaBean类写了一个通用的查询方法,List<javaBean> 通用查询更新中...:通过学习,深刻体会到学会反射就等于掌握了java基础的半壁江山! 一.使用JDBC驱动 ...
- Thinkphp回顾之(四)查询方法深入学习
本次讲的查询方法主要有:表达式查询,模糊查询,between语句,in语句,区间查询,统计数据,普通方式查询,但大多数都只是引入数组而已,明白了第一个,其他的也就差不多全明白了,唯一要注意的是在后台中 ...
- MyBaits一对一的查询方法
MyBaits一对一的查询方法 一:表数据与表结构 CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name ) ); CRE ...
- php标签云制作——数据表的结构和查询方法
1.数据表的结构: 创建建两张数据表,结构如下: 标签tag表: 文章mood表: 其中mood表中的tag字段,以tag表的id字段+“,”+tag表的id字段, 2.查询方法: 例如:如果需要某篇 ...
- JAVA 模糊查询方法
当我们需要开发一个方法用来查询数据库的时候,往往会遇到这样一个问题:就是不知道用户到底会输入什么条件,那么怎么样处理sql语句才能让我们开发的方法不管接受到什么样的条件都可以正常工作呢?这时where ...
- 使用ResultSet,写了一个通用的查询方法
此方法很烂,以后优化 /** * 通用的查询方法:SELECT */ @SuppressWarnings({ "unchecked", "rawtypes" } ...
- YII AR查询方法
ActiveRecord类文档:http://www.yiiframework.com/doc/guide/1.1/en/database.ar 对于一个Model Post 有如下的4中查询方法,返 ...
随机推荐
- poj 3468(线段树)
http://poj.org/problem?id=3468 题意:给n个数字,从A1 …………An m次命令,Q是查询,查询a到b的区间和,c是更新,从a到b每个值都增加x.思路:这是一个很明显的线 ...
- 1.go的Hello
新建hello.go 内容: package main import ( "fmt" ) func main() { fmt.Println("Hello liuyao& ...
- iOS应用文件夹
IOS5多了一个比较重要的功能iCloud,但是同时也出现一个问题,很多的APP都把很大量的数据存在APP底下的Documents(/Documents )文件夹里面,这样苹果会reject掉你的AP ...
- .Net自带缓存Cache的使用
对于数据比较大,经常要从数据库拿出来用的,可以考虑使用.Net自带的缓存Cache,简单好用: //向内存中插入一个缓存 System.Web.HttpRuntime.Cache.Insert(&qu ...
- C++ 基础知识复习(三)
43. 继承的几种方式: 答:共有继承public,保护继承protected,私有继承private.其中后两种继承会改变原有的访问级别. 44. 深复制与浅复制: 答:简单理解,深复制自己申请了内 ...
- redis-3.2.5 make 报错
make[]: Entering directory `/usr/local/src/redis-/src' CC adlist.o In file included : zmalloc.h::: e ...
- 1.GoldenGate 简单的一对一配置
一,软件安装 源端和目标端均执行(只要修改相应的目录) 1.上传软件,放到ogg的安装目录,并解压 mkdir /home/oracle/ogg unzip ogg112101_fbo_g ...
- HTTP POST请求报文格式分析与Java实现文件上传
时间 2014-12-11 12:41:43 CSDN博客 原文 http://blog.csdn.net/bboyfeiyu/article/details/41863951 主题 HTTPHt ...
- LCA + 树状数组 + 树上RMQ
题目链接:http://poj.org/problem?id=2763 思路:首先求出树上dfs序列,并且标记树上每个节点开始遍历以及最后回溯遍历到的时间戳,由于需要修改树上的某两个节点之间的权值,如 ...
- npm 安装不了模块
npm install 不能安装模块 先卸载npm,然后再重新安装 sudo npm uninstall npm -g 如果上面卸载不了,则进入到npm的安装目录(which npm): sudo m ...