spring JPA 动态查询

Posted 阿木申 申楠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring JPA 动态查询相关的知识,希望对你有一定的参考价值。

 

没什么好说的,记住就行。

下面是在Service中的方法

Page<TStaff> staffs=dao.findAll(new Specification<TStaff>() {
			
			@Override
			public Predicate toPredicate(Root<TStaff> root, CriteriaQuery<?> query,
					CriteriaBuilder cb) {
				Predicate predicate = cb.conjunction();
	            List<Expression<Boolean>> expressions = predicate.getExpressions();
				
				if(StringUtils.isNotEmpty(loginName)){
					expressions.add(cb.equal(root.<String>get("loginName"), loginName));
				}
				if(StringUtils.isNotEmpty(email)){
					expressions.add(cb.equal(root.get("email").as(String.class), email));
				}
				if(StringUtils.isNotEmpty(groupDn)){
					expressions.add(cb.like(root.<String>get("groupDn"), "%"+groupDn));
				}
				
				return predicate;
			}
		}, new PageRequest(page.getCurPage(), page.getPageSize()));

  

dao定义如下:

public interface StaffDao extends Repository<TStaff, String>,JpaSpecificationExecutor<TStaff>  

  

以上是关于spring JPA 动态查询的主要内容,如果未能解决你的问题,请参考以下文章

Spring-Data-JPA 中的查询如何动态组装条件?

spring data jpa 动态查询(mysql)

spring data jpa 动态查询(mysql)

请教关于Spring Data JPA动态查询参数的问题

spring JPA 动态查询

基于Spring Boot,使用JPA动态调用Sql查询数据