gradle搭建jpa+querydsl
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

71 lines
2.4 KiB

package com.aiprose.querydsl.service;
import com.aiprose.base.BasicServiceImpl;
import com.aiprose.querydsl.entity.Emp;
import com.aiprose.querydsl.entity.QEmp;
import com.aiprose.querydsl.repository.EmpRepository;
import com.aiprose.querydsl.util.FixedPageData;
import com.querydsl.core.QueryResults;
import com.querydsl.core.types.ExpressionUtils;
import com.querydsl.core.types.Predicate;
import com.querydsl.jpa.impl.JPAQueryFactory;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
/**
* @version 1.0
* @Auther: nelson
* @company 北京中经网软件有限公司
* @Date: 2020/9/14
*/
@Transactional
@Service
public class EmpService extends BasicServiceImpl<Emp,Integer> {
@Autowired
private JPAQueryFactory queryFactory;
@Autowired
private EmpRepository repository;
@Override
public JpaRepository<Emp, Integer> getJpaRepository() {
return repository;
}
@Override
public JpaSpecificationExecutor<Emp> getJpaSpecificationExecutor() {
return null;
}
public FixedPageData list(Integer page, Integer size, Emp emp) {
FixedPageData pageData = new FixedPageData(page, size);
QEmp qEmp = QEmp.emp;
Integer deptId = emp.getDeptId();
String empName = emp.getEmpName();
Long mobile = emp.getMobile();
Predicate predicate = qEmp.isNotNull();
if (StringUtils.isNotBlank(empName)) {
predicate = ExpressionUtils.and(predicate, qEmp.empName.eq(empName));
}
if (deptId != null) {
predicate = ExpressionUtils.and(predicate, qEmp.deptId.eq(deptId));
}
if (mobile != null) {
predicate = ExpressionUtils.and(predicate, qEmp.mobile.eq(mobile));
}
QueryResults<Emp> queryResults = queryFactory.selectFrom(qEmp).where(predicate).offset(pageData.getOffset())
.limit(pageData.getSize()).fetchResults();
pageData.setResults(queryResults.getResults());
pageData.setTotal(queryResults.getTotal());
return pageData;
}
}