明天想说的就是可能在咱们操作数据库的时候更简略的更高效的实现,现成的CRUD接口间接调用,方便快捷,不必再写简单的sql,带吗简略易懂,话不多说上办法
1、Utils.java工具类中的办法
1 /** 2 * 获取Sort 3 * 4 * @param direction - 排序方向 5 * @param column - 用于排序的字段 6 */ 7 public static Sort getSort(String direction,String column){ 8 Sort sort = null; 9 if(column == null || column == "") return null;10 if(direction.equals("asc")||direction.equals("ASC")){11 sort = Sort.by(Sort.Direction.ASC,column);12 }else {13 sort = Sort.by(Sort.Direction.DESC,column);14 }15 return sort;16 }17 /**18 * 获取分页19 * @param pageNumber 当前页20 * @param pageSize 页面大小21 * @param sort 排序;sort为空则不排序只分页22 * @return 分页对象23 */24 public static Pageable getPageable(int pageNumber,int pageSize,Sort sort){25 if(sort!=null){26 return PageRequest.of(pageNumber,pageSize,sort);27 }28 return PageRequest.of(pageNumber,pageSize);29 }30 /**31 * 判断String是否为空32 * @param str33 * @return34 */35 private static boolean isEmpty(String str){36 if(str.equals(null)||str.equals("")) return true;37 return false;38 }
2、实现类
这里查问相干参数是前端传的,所以用默认值了,查问条件能够是多条件动静,排序也能够是动静的,只有传排序字段和排序方向对号入座即可。
@Overridepublic Page<User> findAll() { // 创立测试对象 User user = new User(); user.setName("1"); Sort sort = Utils.getSort("asc","name"); Pageable pageable = Utils.getPageable(0,5,sort); // 调用组装查问条件办法 Specification<User> spec = getSpecification(user); return userRepository.findAll(spec,pageable);}/** * 组装查问条件 * @param user -查问相干对象 * @return 返回组装过的多查问条件 */private Specification<User> getSpecification(User user) { Specification<User> specification = new Specification<User>() { @Override public Predicate toPredicate(Root<User> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) { List<Predicate> 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<User, Integer>, JpaSpecificationExecutor<User> {}
最初
私信回复 材料 支付一线大厂Java面试题总结+阿里巴巴泰山手册+各知识点学习思维导+一份300页pdf文档的Java外围知识点总结!
这些材料的内容都是面试时面试官必问的知识点,篇章包含了很多知识点,其中包含了有基础知识、Java汇合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。