My Batis Rest Dinámico
Identificando el problema
MyBatis recomienda mappear el resultado de la ejecución a una clase o a un Map, La clase o Map previamente estan definidos con ciertos campos a la espera del resultado de la ejecución de MyBatis que asu vez lo mapera automaticamente, los campos establecidos no es administrable cuando se requiere una cierta cantidad de consultas a la base de datos ejemplos 10, 20, 50 o 100 consultas, tendriamos que crear la misma cantidad de Clase o Map, en algunos casos reutilizar aquellos con campos similares.
Encontrando la solución
Para solucionar este problema solo hacemos uso de un Map para utilizarlo como respuesta de MyBatis y mediante Spring generamos el REST automaticamente, la responsabilidad de los campos y la estructura los pasamos a la base de datos, en este caso a un procedimiento almacenado.
Detalles
- Cada consulta debe tener un ID único.
query1,query2,queryn
- En este caso acepta 5 parámetros
%param1=¶m2=¶mn=
- Utilización de procedimiento almacenado que se encarga de ejecutar en función al codigo de QueryId, utilizando Switch y otra técnica
?querys=Query1,Query2,Queryn
- Se puede invocar uno o varias consultas en una misma petición para optimizar.
Resultado
/portal/datos.do?querys=SCE05&pnum=1&psize=25
{
"SCE05": {
"size": 4889,
"data": [
{
"distrito": "TAHUANIA",
"estado": "APROBADO",
"item": "1",
"id": "2737",
"nombre_proyecto": "MEJORAMIENTO DE LA PRODUCCION DEL GANADO VACUNO",
"titular": "PROYECTO ESPECIAL PICHIS PALCAZU"
},
{
"distrito": "RAYMONDI",
"estado": "APROBADO",
"item": "2",
"id": "2737",
"nombre_proyecto": "MEJORAMIENTO DE LA PRODUCCION DEL GANADO VACUNO",
"titular": "PROYECTO ESPECIAL PICHIS PALCAZU"
}
]
},
"success": true
}
/portal/datos.do?querys=SCE01,SCE02
{
"SCE01": {
"size": 23,
"data": [
{
"nombre": "2019"
},
{
"nombre": "2018"
}
]
},
"SCE02": {
"size": 3,
"data": [
{
"total": "893",
"nombre": "CONFORME"
},
{
"total": "3986",
"nombre": "APROBADO"
}
]
},
"success": true
}
La fuente lo pueden ver en GitHub
This is a really informative knowledge, Thanks for posting this informative Information. Teams Usuario
ResponderEliminar