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)的更多相关文章

  1. springboot整合spring data jpa 动态查询

    Spring Data JPA虽然大大的简化了持久层的开发,但是在实际开发中,很多地方都需要高级动态查询,在实现动态查询时我们需要用到Criteria API,主要是以下三个: 1.Criteria ...

  2. spring data jpa 动态查询(工具类封装)

    利用JPA的Specification<T>接口和元模型就实现动态查询了.但是这样每一个需要动态查询的地方都需要写一个这样类似的findByConditions方法,小型项目还好,大型项目 ...

  3. spring data jpa 分页查询

    https://www.cnblogs.com/hdwang/p/7843405.html spring data jpa 分页查询   法一(本地sql查询,注意表名啥的都用数据库中的名称,适用于特 ...

  4. Spring Boot 入门系列(二十七)使用Spring Data JPA 自定义查询如此简单,完全不需要写SQL!

    前面讲了Spring Boot 整合Spring Boot JPA,实现JPA 的增.删.改.查的功能.JPA使用非常简单,只需继承JpaRepository ,无需任何数据访问层和sql语句即可实现 ...

  5. spring data JPA entityManager查询 并将查询到的值转为实体对象

    spring data JPA entityManager查询 并将查询到的值转为实体对象 . https://blog.csdn.net/qq_34791233/article/details/81 ...

  6. 【Spring Data 系列学习】Spring Data JPA 基础查询

    [Spring Data 系列学习]Spring Data JPA 基础查询 前面的章节简单讲解了 了解 Spring Data JPA . Jpa 和 Hibernate,本章节开始通过案例上手 S ...

  7. 【Spring Data 系列学习】Spring Data JPA 自定义查询,分页,排序,条件查询

    Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application ...

  8. Spring Data JPA 动态拼接条件的通用设计模式

    import java.sql.Timestamp;import java.util.ArrayList;import java.util.List;import javax.persistence. ...

  9. Spring Data JPA 简单查询--接口方法

    一.接口方法整理速查 下表针对于简单查询,即JpaRepository接口(继承了CrudRepository接口.PagingAndSortingRepository接口)中的可访问方法进行整理.( ...

随机推荐

  1. Nchan nginx 支持的开源消息推送模块

    1. 介绍 // 官方说明 Nchan is a scalable, flexible pub/sub server for the modern web, built as a module for ...

  2. Oracle修改主键约束

    项目需求,有张表,原有三个联合主键,现在需要再加一个字段进去,而恰恰这个字段可以为空的.去数据库捞了一把,还好数据都不为空: SQL> select count(*) from t_wlf_re ...

  3. stm32f0系列在SWD模式下载时复位失败

    用stm32f030K6T6做了个小玩意,仿真电路就直接把3.3V,SWDIO,SWCLK,GND引出来连接到j-link的这四个角上,SWDIO和SWCLK引脚既没有上拉也没有下拉.     MCU ...

  4. NetCore下模拟和使用Modbus工业通信协议

    Tips: 1.目前NetCore下与Modbus通信的框架主要选择了 Modbus.Net  https://github.com/parallelbgls/Modbus.Net 2.modbus是 ...

  5. jmeter 历史版本下载

    在官网下载: https://jmeter.apache.org/download_jmeter.cgi 新版本 要从命令行启动 cd 到bin目录下 使用 sh jmeter

  6. Linux命令-chmod、chown和chgrp

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  7. 第四章 Kubernetes 架构

    4.1 Master节点:Master是大脑,运行如下Daemon服务: API Server(kube-apiserver)      API server提供了HTTP/HTTPS RESTful ...

  8. 5月17日上课笔记-js面向对象

    二.js面向对象 js创建对象: var 对象名称 = new Object(); person.name = "小明"; //姓名 person.age = 18; person ...

  9. 函数和object

    普通函数 在javascript中,函数是一等公民,函数在javascript是一个数据类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用. 一.函数调用形式 函数调用形式是最常见的形式,也是 ...

  10. mysql清理连接

    关闭指定ip的连接: for i in $(mysql -uusername -ppassword -Bse "select * from information_schema.proces ...