今天想说的就是能够在我们操作数据库的时候更简单的更高效的实现,现成的CRUD接口直接调用,方便快捷,不用再写复杂的sql,带吗简单易懂,话不多说上方法
1、Utils.java工具类中的方法
public static Sort getSort(String direction,String column){
Sort sort = null;
if(column == null || column == "") return null;
if(direction.equals("asc")||direction.equals("ASC")){
sort = Sort.by(Sort.Direction.ASC,column);
}else {
sort = Sort.by(Sort.Direction.DESC,column);
}
return sort;
}
public static Pageable getPageable(int pageNumber,int pageSize,Sort sort){
if(sort!=null){
return PageRequest.of(pageNumber,pageSize,sort);
}
return PageRequest.of(pageNumber,pageSize);
}
private static boolean isEmpty(String str){
if(str.equals(null)||str.equals("")) return true;
return false;
}
2、实现类
这里查询相关参数是前端传的,所以用默认值了,查询条件可以是多条件动态,排序也可以是动态的,只要传排序字段和排序方向对号入座即可。
@Override public PagefindAll() { // 创建测试对象 User user = new User(); user.setName("1"); Sort sort = Utils.getSort("asc","name"); Pageable pageable = Utils.getPageable(0,5,sort); // 调用组装查询条件方法 Specification spec = getSpecification(user); return userRepository.findAll(spec,pageable); } private Specification getSpecification(User user) { Specification specification = new Specification () { @Override public Predicate toPredicate(Root root, CriteriaQuery> criteriaQuery, CriteriaBuilder criteriaBuilder) { List predicates = new ArrayList<>(); // 判断条件不为空 if(!Utils.isEmpty(user.getName())){ predicates.add(criteriaBuilder.like(root.get("name"),user.getName())); } return criteriaQuery.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction(); } }; return specification; }
3.repository类中这么写
@Repository
public interface UserRepository extends JpaRepository, JpaSpecificationExecutor {}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



