Spring Data JPA动态查询(多条件and)
entity:
@Entity
@Table(name = "data_illustration")
public class Test { @Id
@GenericGenerator(name = "uuid", strategy = "org.hibernate.id.UUIDGenerator")
@GeneratedValue(generator = "uuid")
private String id; @Column(name = "fileId")
private String fileid; private String title; @Column(name = "WFState")
private String wfstate; @Column(name = "issueNo")
private String issueno; private String format; //对应得set、get方法省略 }
mapper:
public interface IllustrationMapper extends JpaRepository<Test, String> {
@Transactional
@Modifying
@Query(value="delete from test where id=?1 ",nativeQuery=true)
int deleteByPrimaryKey(String id); List<Test> findAll(Specification<CsdbDataIllustration> specification); //传入Specification对象 }
service:
public List<Test > getDataIllustrationList(Test test) {
List<Test > test2 = dataIllustrationMapper.findAll(new Specification<Test >(){
@Override
public Predicate toPredicate(Root<Test > root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicates = new ArrayList<Predicate>(); if(StringUtils.isNotBlank(test.getId())){
predicates.add(cb.equal(root.get("id"), test.getId()));
} if(StringUtils.isNotBlank(test.getFileid())){
predicates.add(cb.equal(root.get("fileid"), test.getFileid() ));
}
if(StringUtils.isNotBlank(test.getTitle())){
predicates.add(cb.equal(root.get("title"), test.getTitle() ));
}
if(StringUtils.isNotBlank(test.getWfstate())){
predicates.add(cb.equal(root.get("wfstate"), test.getWfstate() ));
}
if(StringUtils.isNotBlank(test.getIssueno())){
predicates.add(cb.equal(root.get("issueno"), test.getIssueno() ));
}
if(StringUtils.isNotBlank(test.getFormat())){
predicates.add(cb.equal(root.get("format"), test.getFormat() ));
} return cb.and(predicates.toArray(new Predicate[predicates.size()])); //将上面满足条件的项用and拼接起
//来进行查询,当然此处也可以改为or或者like等等,视情况而定
} });
return test2;
}
Spring Data JPA动态查询(多条件and)的更多相关文章
- springboot整合spring data jpa 动态查询
Spring Data JPA虽然大大的简化了持久层的开发,但是在实际开发中,很多地方都需要高级动态查询,在实现动态查询时我们需要用到Criteria API,主要是以下三个: 1.Criteria ...
- spring data jpa 动态查询(工具类封装)
利用JPA的Specification<T>接口和元模型就实现动态查询了.但是这样每一个需要动态查询的地方都需要写一个这样类似的findByConditions方法,小型项目还好,大型项目 ...
- spring data jpa 分页查询
https://www.cnblogs.com/hdwang/p/7843405.html spring data jpa 分页查询 法一(本地sql查询,注意表名啥的都用数据库中的名称,适用于特 ...
- Spring Boot 入门系列(二十七)使用Spring Data JPA 自定义查询如此简单,完全不需要写SQL!
前面讲了Spring Boot 整合Spring Boot JPA,实现JPA 的增.删.改.查的功能.JPA使用非常简单,只需继承JpaRepository ,无需任何数据访问层和sql语句即可实现 ...
- spring data JPA entityManager查询 并将查询到的值转为实体对象
spring data JPA entityManager查询 并将查询到的值转为实体对象 . https://blog.csdn.net/qq_34791233/article/details/81 ...
- 【Spring Data 系列学习】Spring Data JPA 基础查询
[Spring Data 系列学习]Spring Data JPA 基础查询 前面的章节简单讲解了 了解 Spring Data JPA . Jpa 和 Hibernate,本章节开始通过案例上手 S ...
- 【Spring Data 系列学习】Spring Data JPA 自定义查询,分页,排序,条件查询
Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application ...
- Spring Data JPA 动态拼接条件的通用设计模式
import java.sql.Timestamp;import java.util.ArrayList;import java.util.List;import javax.persistence. ...
- Spring Data JPA 简单查询--接口方法
一.接口方法整理速查 下表针对于简单查询,即JpaRepository接口(继承了CrudRepository接口.PagingAndSortingRepository接口)中的可访问方法进行整理.( ...
随机推荐
- oracle之 RAC Interconnect之HAIP
0. 背景 Oracle 从11.2.0.2开始引入了一个新特性叫做Redundant Interconnect,简称HAIP.HAIP的目的用来代替操作系统级别的网卡绑定以实现Active-Acti ...
- Spark的CombineByKey
combineBykey关键是要明白里面的三个函数: 1. 当某个key第一次出现的时候,走的是第一个函数(createCombin):A function that creates a combin ...
- 关于angular的好文推荐
独立作用域篇 1)http://www.angularjs.cn/A09C 2)http://www.cnblogs.com/wangmeijian/p/4944030.html 理解$watch , ...
- 老齐python-基础9(函数)
继续上篇 函数 多参数: >>> def foo(x,y,z,*args,**kargs): ... print(x) ... print(y) ... print(z) ... p ...
- ruby关于require路径
ruby里面的require说明 require './aaaa' 这种方式,包含的是系统路径 相对路径得用下面的 require_relative "./xxxx" 或者使用这个 ...
- golang调用动态库
测试动态库 test_so.h int test_so_func(int a,int b); test_so.c #include "test_so.h" int test_so_ ...
- js 点击 隐藏弹出层
document.onmousedown = function(e){ var ev = document.all ? window.event : e; var _con = $("#ci ...
- appium+python自动化33-解锁九宫格(TouchAction)
TouchAction 1.源码可以在这个路径找到:Lib\site-packages\appium\webdriver\common\touch_action.py class TouchActio ...
- python多标签分类模版
from sklearn.multioutput import MultiOutputClassifier from sklearn.ensemble import RandomForestClass ...
- 云服务器 ECS Linux 软件源自动更新工具
https://help.aliyun.com/knowledge_detail/41177.html#%E5%B7%A5%E5%85%B7%EF%BC%9Aupdate_source.sh 功能说明 ...