spring boot 复杂多条件分页排序列表查询
2017-11-09 15:52
543 查看
Controller层就不写了,主要贴一下Service代码。
Service
Service
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; @Service("operatingRecordService") @Transactional public class OperatingRecordService { @Autowired private OperatingRecordRepository operatingRecordRepository; /** * 分页列表模糊 查询 * * @param page * @param rows * @param operatingRecordVO * @return */ public Page<OperatingRecordVO> findPageList(Integer page,Integer rows,OperatingRecordVO operatingRecordVO){ page = (page == null) ? 1 : page; rows = (rows == null) ? 10 : rows; Pageable pageable = new PageRequest(page - 1, rows, Sort.Direction.DESC,"id");//id倒序排列 return (Page<OperatingRecordVO>) operatingRecordRepository.findAll(new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { //操作对象 模糊查询 if (!StringUtil.isBlank(operatingRecordVO.getObjects())) { Predicate objects ; objects = cb.like(root.get("objects"), "%"+operatingRecordVO.getObjects()+"%"); query.where(objects); } //操作类型 精确查询 if (operatingRecordVO.getType()!= null && !"".equals(operatingRecordVO.getType())) { Predicate type ; type = cb.equal(root.get("type"), operatingRecordVO.getType()); query.where(type); } //操作状态 if (operatingRecordVO.getStatus()!= null && !"".equals(operatingRecordVO.getStatus())) { Predicate status ; status = cb.equal(root.get("status"), operatingRecordVO.getStatus()); query.where(status); } return null; }; }, pageable); }; }
OperatingRecordRepository
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @Repository @Transactional(propagation = Propagation.NESTED) public interface OperatingRecordRepository extends JpaRepository<OperatingRecordVO, Integer> , JpaSpecificationExecutor<OperatingRecordVO> { }
相关文章推荐
- struts hibernate spring 实现分页、排序、复杂条件查询②
- 带条件分页查询的主数据列表(施工单位为例)
- Subsonic 复杂查询(动态条件) 连表、分页
- MVC 列表多条件动态查询分页
- (转)动态多条件查询分页以及排序(一)--MVC与Entity Framework版url分页版
- 【定区管理功能】定区列表分页条件查询
- Entity Framework4.1实现动态多条件查询、分页和排序
- 转载 spring-data-jpa 介绍 复杂查询,包括多表关联,分页,排序等
- JQueryEasyUI-DataGrid显示数据,条件查询,排序及分页
- SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页
- Mongodb 3.2 Java 显示指定字段 条件查询 分页排序
- C# MongoDB 查询,分组,聚合,排序,条件,分页
- 多条件查询数据列表并进行分页
- 动态多条件查询分页以及排序(一)--MVC与Entity Framework版url分页版
- springmvc4+spring4+hibernate4注解开发,分页查询,表头排序,多条件模糊查询,查询自动补全功能
- JPA集成queryDSL,灵活查询 (3.实现条件查询,排序,分页功能)
- 介绍 复杂查询,包括多表关联,分页,排序等
- 使用MVC,实现多条件查询,排序与分页 的 存储过程
- 万能分页存储过程(带第一页性能优化,任意条件查询,任意字段排序)
- Entity Framework4.1实现动态多条件查询、分页和排序