spring-data-jpa动态条件查询

//获取动态条件的集合List<Long> list = new ArrayList<Long>();
        Long sysUserId = currentUser.getSysUserId();
        if (sysUserId != null) {
            SysUser sysUser = sysUserRepository.findOne(sysUserId);
            if (sysUser != null) {
                String groupItemIds = sysUser.groupItemIds();
                if (groupItemIds != null && !groupItemIds.isEmpty()) {
                    String[] str = StringUtils.split(groupItemIds,",");
                    for (String s : str) {
                        if (s != null && !s.isEmpty() && s != "") {
                            list.add(Long.valueOf(s));
                        }
                    }
                }
            }
        }
//封装Specification查询条件Specification<Goods> spec = (root, query, cb) -> {
            List<Predicate> predicates = new ArrayList<Predicate>();

            List<Predicate> preList = new ArrayList<Predicate>();
            if (list != null && list.size()>0) {
                    preList.add(root.<Long>get("groupItemId").in(list));
               }
           if (sysUserId != null) {
                 Predicate predicate = cb.equal(root.get(Goods_.crtUserId), sysUserId);
                 preList.add(predicate);
           }
                Predicate p = cb.or(preList.toArray(new Predicate[preList.size()]));
                predicates.add(p);

            if (!predicates.isEmpty()) {
                return cb.and(predicates.toArray(new Predicate[0]));
            } else {
                return null;
            }
        };

        Page<Goods> pageresult = goodsRepository.findAll(spec, pageable);
时间: 2024-12-29 15:37:00

spring-data-jpa动态条件查询的相关文章

Spring Data Jpa之高级查询(jpa-spec插件)

友情链接:Spring Data Jpa的动态查询库 https://github.com/wenhao/jpa-spec 功能介绍 兼容Spring Data Jpa 和JPA2.1接口. Equal/NotEqual/Like/NotLike/In/NotIn支持可变参数, Equal/NotEqual 支持空(Null)值. 每个条件支持关联查询. 支持自定义条件查询. 条件构建器. 支持分页和排序. 导包: <dependency> <groupId>com.github.

Spring data JPA 理解(默认查询 自定义查询 分页查询)及no session 两种处理方法

简介:Spring Data JPA 其实就是JDK方式的动态代理 (需要一个接口 有一大堆最上边的是Repository接口来自org.springframework.data.repository,还有CrudRepository接口及一个实现类SimpleJpaRepository),只要有接口就可以查询数据库了,实际上就是proxy的方法,具体查询的方法有两种一种是简单式就是方法名为findBy+属性名+(AndOrIsEquals等)另一种是自定义的方法就是属性名是瞎起的向abc xy

spring data jpa 一对多查询

在一对多关系中,我们习惯把一的一方称之为主表,把多的一方称之为从表.在数据库中建立一对多的关系,需要使用数据库的外键约束. 什么是外键? 指的是从表中有一列,取值参照主表的主键,这一列就是外键. package com.ytkj.entity; import javax.persistence.*; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** * @Entity * 作用:

记: Spring Data Jpa @OneToMany 级联查询被动触发的问题

I have encountered a bug in using Spring Data Jpa. Specifically,when @OneToMany was used to maintain a one-to-many relationship, lazy loading was effective.However,it may passively trigger the cascading query without using the cascading property. My

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

import java.sql.Timestamp;import java.util.ArrayList;import java.util.List;import javax.persistence.criteria.CriteriaBuilder;import javax.persistence.criteria.CriteriaQuery;import javax.persistence.criteria.Predicate;import javax.persistence.criteria

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

spring data jpa Specification 复杂查询+分页查询

当Repository接口继承了JpaSpecificationExecutor后,我们就可以使用如下接口进行分页查询: /** * Returns a {@link Page} of entities matching the given {@link Specification}. * * @param spec can be {@literal null}. * @param pageable must not be {@literal null}. * @return never {@l

Spring Data JPA原生SQL查询

package com.wanda.cms.dao.repository;import org.springframework.stereotype.Repository;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import javax.persistence.Query;import java.math.BigInteger;import java.util.*; /*

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

Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application.properties与 Chapter1 相同 实体类映射数据库表 user 实体类 @Entity public class User implements Serializable { private static final long serialVersionUID = -39076354

Spring Data JPA

转自: http://www.cnblogs.com/WangJinYang/p/4257383.html Spring 框架对 JPA 的支持 Spring 框架对 JPA 提供的支持主要体现在如下几个方面: 首先,它使得 JPA 配置变得更加灵活.JPA 规范要求,配置文件必须命名为 persistence.xml,并存在于类路径下的 META-INF 目录中.该文件通常包含了初始化 JPA 引擎所需的全部信息.Spring 提供的 LocalContainerEntityManagerFa