Después de innumerables intentos, finalmente me di cuenta de la función de paginación y experimenté el dolor de ser un programador.
¡Es fácil implementar la búsqueda en la recepción de easyui! ! El empaque es genial. . ¡Aquí solo presentamos el gran pozo encontrado en el fondo! !
Spring data JPA tiene soporte perfecto para paginación y clasificación de consultas. Al implementar la paginación, debe heredar PagingAndSortingRepository.
Un método se define en XxxRepository.java. Por ejemplo:
Page<Department> findById(Integer id, Pageable pageable);
Pageable
es una interfaz definida en la biblioteca Spring Data, la interfaz es una abstracción de toda la información relacionada con la paginación. A través de esta interfaz, podemos obtener toda la información relacionada con la paginación (como pageNumber, pageSize, etc.), para que Jpa pueda obtener una declaración SQL con información de paginación a través del parámetro pageable.
Page
También es una interfaz proporcionada por Spring Data. Esta interfaz representa una parte de la recopilación de datos y sus datos de parte siguiente relacionados, datos totales y otra información relacionada. A través de esta interfaz, podemos obtener la información general de los datos (datos totales, páginas totales ...) y Información sobre datos actuales (recopilación de datos actuales, número actual de páginas, etc.)
Spring Data Jpa nos ayudará a extender la declaración Sql a través de convenciones de nomenclatura, también nos ayudará a manejar parámetros de tipo Pageable, convertir parámetros paginables en condiciones en declaraciones SQL, y al mismo tiempo, también nos ayudará a lidiar con el valor de retorno de type Page Cuando se encuentra que el tipo de valor de retorno es Página, Spring Data Jpa colocará la información general de los datos, la información de los datos actuales y la información de paginación en el valor de retorno. De esta forma, podemos llevar a cabo convenientemente consultas de paginación personalizadas.
El método en servicio:
public Page<T> findAllT(Pageable pageable){
return this.xxxRepository.findAll(pageable);
}
public Page<T> findById(Integer id,Pageable pageable){
return this.xxxRepository.findById(id,pageable);
}```
#####controller中的方法(用的springBoot技术,controller上有@RestController注解):
// Todas las páginas muestran
@RequestMapping (value = "/ displayAll", method = RequestMethod.GET) Public
Map
El problema:
1 、
El error que se muestra es porque no hay longitud y el modelo devuelto no es compatible con el modelo requerido.
2. Después de
escribir el método en segundo plano (el código en este momento es: map.put ("filas", lista);), el primer plano no se muestra. Ejecute la URL correspondiente solo para obtener una captura de pantalla parcial de los datos JSON de la siguiente manera:
Como se muestra en la figura anterior, se puede ver que el método de paginación en el fondo es correcto, y ¿por qué no puede obtener datos JSON?
La razón es que el modelo que devuelve datos JSON no coincide con el modelo requerido por easyui datagrid (datagrid requiere una matriz de modelos o un objeto que contenga filas y total). Ver foto abajo
El modelo de los datos JSON que obtuvimos es el siguiente:
{
"total":15,
"rows":{
"content":[
{"id":1,"Name":"XXXXX","school":{"id":1,"schoolName":"XXXX","departments":[{"id":1,"departmentName":"XXXXX","school":1},","school":3},{"id":15,"departmentName":"jjjj","school":3}]}},{"id":9,"departmentName":"xxx","school":1},{"id":10,"departmentName":"xxx","school":2},{"id":13,"departmentName":"xxx","":1}
],
"last":false,
"totalPages":2,
"totalElements":15,
"number":0,
"size":10,
"sort":null,
"first":true,
"numberOfElements":10
}
}
Las filas que obtenemos no son una matriz ([]), es un objeto ({}), y su propiedad de contenido es el modelo que necesitamos. Por lo tanto, modifique map.put ("rows", list.getContent ()) en el controlador; finalmente se muestra con éxito.
Si hay algo mal, ¡indícalo! ! !