Como programador de Java, incluso puede escribir funciones de paginación simples, ¡lo siento!

Lo que quiero decir hoy es que se puede implementar de manera más simple y eficiente cuando operamos la base de datos. Se puede llamar directamente a la interfaz CRUD lista para usar, lo cual es conveniente y rápido. No hay necesidad de escribir SQL complejo. Es simple y fácil de entender, y no hay mucho que decir.

1. Métodos en la clase de herramientas 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 str
33      * @return
34      */
35     private static boolean isEmpty(String str){
36         if(str.equals(null)||str.equals("")) return true;
37         return false;
38     } 

2. Clase de implementación

Aquí los parámetros relacionados con la consulta son pasados ​​por el front-end, por lo que se utilizan los valores predeterminados. Las condiciones de la consulta pueden ser dinámicas con múltiples condiciones, y la clasificación también puede ser dinámica, siempre que el campo de clasificación y la dirección de clasificación estén marcados.

@Override
public 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. Escribe así en la clase de repositorio.

@Repository

public interface UserRepository extends JpaRepository<User, Integer>, JpaSpecificationExecutor<User> {}

Al final

Responda a los datos mediante un mensaje privado para recibir un resumen de las preguntas de la entrevista de Java de un fabricante importante + manual de Alibaba Taishan + una guía de aprendizaje para los puntos de conocimiento + un resumen de los puntos de conocimiento básicos de Java en un documento pdf de 300 páginas.

El contenido de estos materiales son todos los puntos de conocimiento que el entrevistador debe preguntar durante la entrevista. El capítulo incluye muchos puntos de conocimiento, incluidos conocimientos básicos, colecciones de Java, JVM, concurrencia multiproceso, principios de primavera, microservicios, Netty y RPC, Kafka , Diario, patrón de diseño, algoritmo Java, base de datos, Zookeeper, caché distribuida, estructura de datos, etc. expediente

Supongo que te gusta

Origin blog.csdn.net/weixin_46577306/article/details/108247700
Recomendado
Clasificación