阿木申 申楠

热衷编程技术 | 申楠 : qq:38371354 | msn:amushen2005@hotmail.com

导航

spring JPA 动态查询

Posted on 2016-11-04 22:53  阿木申  阅读(366)  评论(0编辑  收藏  举报

 

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

下面是在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>