【spring data jpa】jpa中criteria拼接in查询
示例代码:
public static Specification<GoodsType> where(final GoodsType goodsType){
return new Specification<GoodsType>() {
@Override
public Predicate toPredicate(Root<GoodsType> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicates = new ArrayList<Predicate>();
//名字+拼音
String name = goodsType.getName();
if(StringUtils.isNotBlank(name)){
Predicate like1 = cb.like(root.<String>get("name"), "%" + name +"%");
Predicate like2 = cb.like(root.<String>get("pyAll"), "%" + PingYinUtil.getPingYin(name) +"%");
Predicate like3 = cb.like(root.<String>get("pyHead"), "%" + PingYinUtil.getPinYinHeadChar(name) +"%");
predicates.add(cb.or(like1,like2,like3));
}
//uid
String uid = goodsType.getUid();
if(StringUtils.isNotBlank(uid)){
predicates.add(cb.equal(root.<String>get("uid"),uid));
}
//parentUid
String parentUid = goodsType.getParentUid();
if(StringUtils.isNotBlank(parentUid)){
predicates.add(cb.equal(root.<String>get("parentUid"),parentUid));
}
//启用 状态
Integer enabledFlag = goodsType.getEnabledFlag();
if (enabledFlag != null){
predicates.add(cb.equal(root.get("enabledFlag"),enabledFlag));
}
//层级
Integer floor = goodsType.getFloor();
if (floor != null){
predicates.add(cb.equal(root.get("floor"),floor));
}
//对外编码
String outerCode = goodsType.getOuterCode();
if(StringUtils.isNotBlank(outerCode)){
predicates.add(cb.equal(root.<String>get("outerCode"),outerCode));
}
//对外id
String outerId = goodsType.getOuterId();
if(StringUtils.isNotBlank(outerId)){
predicates.add(cb.equal(root.<String>get("outerId"),outerId));
}
//租户ID
String tid = goodsType.getTenementId();
if(StringUtils.isNotBlank(tid)){
predicates.add(cb.equal(root.<String>get("tenementId"),tid));
}
String typeUidArrStr = goodsType.getTypeUidArrStr();
if (StringUtils.isNotBlank(typeUidArrStr)) {
In<String> in = cb.in(root.<String>get("parentUid"));
String[] split = typeUidArrStr.split(",");
for (String string : split) {
in.value(string);
}
predicates.add(in);
}
//未被删除 且 启用状态无视
predicates.add(cb.equal(root.get("delFlag"),GoodsType.DEL_FLAG_EXIST));
return query.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
}
};
}
【spring data jpa】jpa中criteria拼接in查询的更多相关文章
- Spring Data MongoDB 三:基本文档查询(Query、BasicQuery
一.简介 spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...
- Spring Data MongoDB 五:进阶文档查询(分页、Morphia)(二)
Spring Data MongoDB 三:基本文档查询(Query.BasicQuery)(一) 学习MongoDB 六: MongoDB查询(游标操作.游标信息)(三) 一.简单介绍 Spring ...
- Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)
一.简单介绍 Spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一 ...
- [Spring Data MongoDB]学习笔记--MongoTemplate查询操作
查询操作主要用到两个类:Query, Criteria 所有的find方法都需要一个query的object. 1. 直接通过json来查找,不过这种方式在代码中是不推荐的. BasicQuery q ...
- Spring data mongodb ObjectId ,根据id日期条件查询,省略@CreatedDate注解
先看看ObjectId 的json 结构,非常丰富,这里有唯一机器码,日期,时间戳等等,所以强烈建议ID 使用 ObjectId 类型,并且自带索引 Spring data mongodb 注解 @C ...
- mysql 中字符串拼接,查询sql语句总结
DELIMITER $$ USE `ld_wpfmgl_sys`$$ DROP PROCEDURE IF EXISTS `code_query`$$ CREATE DEFINER=`root`@`%` ...
- 干货|一文读懂 Spring Data Jpa!
有很多读者留言希望松哥能好好聊聊 Spring Data Jpa!其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring D ...
- Spring Data - Spring Data JPA 提供的各种Repository接口
Spring Data Jpa 最近博主越来越懒了,深知这样不行.还是决定努力奋斗,如此一来,就有了一下一波复习 演示代码都基于Spring Boot + Spring Data JPA 传送门: 博 ...
- Spring Boot2 系列教程(二十三)理解 Spring Data Jpa
有很多读者留言希望松哥能好好聊聊 Spring Data Jpa! 其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring ...
随机推荐
- mktime(将时间结构数据转换成经过的秒数)
mktime(将时间结构数据转换成经过的秒数)表头文件#include<time.h>定义函数time_t mktime(strcut tm * timeptr);函数说明mktime() ...
- netty 基础知识
http://my.oschina.net/bieber/blog/406799 线程模型 http://hongweiyi.com/2014/01/netty-4-x-thread-model/ h ...
- Expert C Programming 阅读笔记(~CH1)
P4: 好梗!There is one other convention—sometimes we repeat a key point to emphasize it. In addition, w ...
- 一个完整的 JS 身份证校验代码
一个完整的 JS 身份证校验代码 身份证号码是由 18 位数字组成的,它们分别表示: (1) 前 1.2 位数字表示: 所在省份的代码; (2) 第 3.4 位数字表示: 所在城市的代码; (3) 第 ...
- 转:The Great DOM Fuzz-off of 2017
The Great DOM Fuzz-off of 2017 Posted by Ivan Fratric, Project Zero https://googleprojectzero.blogsp ...
- Spring Boot 整合MyBatis(1)
这篇文章介绍如何在Spring boot中整合Mybatis,其中sql语句采用注解的方式插入.后续文章将会介绍,如何使用xml方式. SSM SSH框架已经满足轻量级这个需求了,但是对于开发人员而言 ...
- Java常用工具类之删除文件
package com.wazn.learn.util; import java.io.File; /** * 删除文件工具类 * @author yangzhenyu * */ public cla ...
- 【BZOJ 3566】 3566: [SHOI2014]概率充电器 (概率树形DP)
3566: [SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电 ...
- 51Nod1140 矩阵相乘的结果
随机化算法. A*B==C那么X*A*B==X*C 降到了n*n复杂度. 多次随机X判断即可. By:大奕哥 #include<bits/stdc++.h> using namespace ...
- [BZOJ4240]有趣的家庭菜园(贪心+树状数组)
最后数列一定是单峰的,问题就是最小化最后的位置序列的逆序对数. 从大到小加数,每次贪心看放左边和右边哪个产生的逆序对数更少,树状数组即可. 由于大数放哪对小数不产生影响,所以正确性显然. 注意相同数之 ...