1、如何实现排序
a 命名查询:
public interface ParamsRepository extends JpaRepository<CwParams, String>,JpaSpecificationExecutor<CwParams> {
List<CwParams> findAllByOrderByCodeDesc();//根据code倒序查询
}
b 基于Sort:
public ResponseResult listRecord(RecordCondition condition) {
LocalResponseResult responseResult = super.buildResponseResult(condition);
Pageable pageable = new PageRequest(condition.getPage() - 1, condition.getSize(),new Sort(Sort.Direction
.DESC,"id"));//创建分页条件和排序条件
Specification<CwStopRecord> specification = (Specification<CwStopRecord>) (root, query, cb) -> {
List<Predicate> list = new ArrayList<>();
//条件全为空则执行无条件查询
if (StringUtils.isNotBlank(condition.getType())) {
Predicate p1 = cb.equal(root.get("type"), condition.getType());
list.add(p1);
}
if (StringUtils.isNotBlank(condition.getCarNo())) {
Predicate p2 = cb.like(root.get("carNo"), "%" + condition.getCarNo() + "%");
list.add(p2);
}
if (StringUtils.isNotBlank(condition.getPhone())) {
Predicate p3 = cb.like(root.get("phone"), "%" + condition.getPhone() + "%");
list.add(p3);
}
if (StringUtils.isNotBlank(condition.getStallNo())) {
Predicate p4 = cb.like(root.get("stallNo"), "%" + condition.getStallNo() + "%");
list.add(p4);
}
if (StringUtils.isNotBlank(condition.getGardName())) {
Predicate p5 = cb.like(root.get("gardName"), "%" + condition.getGardName() + "%");
list.add(p5);
}
return cb.and(list.toArray(new Predicate[0]));
};
Page<CwStopRecord> page = stopRecordRepository.findAll(specification, pageable);
Map<String, Object> result = new HashMap<>();
result.put("total", page.getTotalElements());
result.put("rows", page.getContent());
return responseResult.result(HttpStatus.OK, result);
}
2、Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query
在service层没有在对应的方法上添加事物注解导致
3、JPA注解查询的两种参数注入方式
a ?参数位置
@Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2")
List<Book> findByPriceRange(long price1, long price2);
b :参数名
@Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price")
List<Book> findByNamedParam(@Param("name") String name, @Param("author") String author,
@Param("price") long price);