【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 ...
随机推荐
- [置顶]
人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)
这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...
- xcode上真机调试iphone4s出现“There was an internal API error.”解决方案
xcode7更新之后使用真机调试,在IOS8的一台Iphone5手机上面没什么问题,IOS8的一台iphone6也没问题.但是在IOS6的一台Iphone4s和 IOS7的ipad air2上面在最后 ...
- XSS与CSRF两种跨站攻击总结
在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了.但是 ...
- scala学习笔记3
一.条件表达式 在scala中if/else表达式有值,这个值就是跟在if或者else之后的表达式的值. scala> val x = 10 x: Int = 10 scala> val ...
- php正则判断手机号码的方法
导读: php用正则表达式判断手机号码的写法:从文章中匹配出所有的手机号就可以preg_match_all(),如果要检查用户输入的手机号是否正确可这样来检查:preg_match(). 用正则匹配手 ...
- Maven使用第三方jar文件的两种方法<转>
http://www.cnblogs.com/sekai/p/5932206.html 今天用上了.. ===================== 在Maven中,使用第三方库一般是通过pom.xml ...
- 一个完整的 JS 身份证校验代码
一个完整的 JS 身份证校验代码 身份证号码是由 18 位数字组成的,它们分别表示: (1) 前 1.2 位数字表示: 所在省份的代码; (2) 第 3.4 位数字表示: 所在城市的代码; (3) 第 ...
- Java 中 JDBC 基础配置
Java 中 JDBC 基础配置 <resource auth="Container" driverclassname="oracle.jdbc.driver.Or ...
- JAVA编程思想读书笔记(二)--容器
接上篇JAVA编程思想读书笔记(一) 第八章.对象的容纳 No1: java提供了四种类型的集合类:Vector(矢量).BitSet(位集).Stack(堆栈).Hashtable(散列表) No2 ...
- ZOJ 3954 Seven-Segment Display
二分图匹配. 先检查每个数字$1$的个数是否满足条件,不满足直接就是无解.剩下的情况可以建立二分图,如果现在的某一列可以对应于原图的某一列,那么建边.如果二分图的最大匹配是$7$,则有解,否则误解. ...