上一篇:单表增删改查
插入七条数据
服务实现层
sql:每页两条数据,第一页,按name倒序排序
@Override
public Page findBySpecification() {
Specification specification = new Specification() {
@SneakyThrows
@Override
public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) {
Predicate condition = null;
return condition;
}
};
Sort sort = Sort.by(Sort.Direction.DESC, "name");
Pageable pageable = PageRequest.of(0, 2, sort);
return customerDao.findAll(specification, pageable);
}
Controller层
@Transactional
@Rollback(value = false)
@RequestMapping("queryBySpecification")
Page queryBySpecification() {
return customerImpl.findBySpecification();
}
浏览器查找
http://localhost:8080/customer/queryBySpecification
结果
分组
目标sql
select * from customer where custId =? and name like? and address like ? group by age order by name desc limit 0,4
服务实现层
public Page customerGroup(Long id,String name,String address) {
Specification specification = new Specification() {
@Override
public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) {
List<Predicate> predList = new LinkedList<>();
if (id != null) {
predList.add(criteriaBuilder.equal(root.get("custId").as(Integer.class), id));
}
if (name != null) {
predList.add(criteriaBuilder.like(root.get("name").as(String.class), "%" + name + "%"));
}
if (address != null) {
predList.add(criteriaBuilder.like(root.get("address").as(String.class), "%" + address + "%"));
}
Predicate[] predArray = new Predicate[predList.size()];
predList.toArray(predArray);
query.where(predArray);
query.groupBy(root.get("age"));
return query.getRestriction();
}
};
Sort sort = Sort.by(Sort.Direction.DESC, "name");
Pageable pageable = PageRequest.of(0, 4, sort);
return customerDao.findAll(specification, pageable);
}
控制层
@Transactional
@Rollback(value = false)
@RequestMapping("customerGroup")
List customerGroup() {
return customerImpl.customerGroup();
}
http://localhost:8080/customer/customerGroup?address=wei&name=s
结果
版权声明:本文为qq_23355059原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。