Служба Rest в Spring Boot, которая вызывает хранимую процедуру и должна возвращать ответ в JSON - PullRequest
0 голосов
/ 17 февраля 2020

Я относительно новичок в весенней загрузке, и я работаю со службой отдыха, которая получает телефонный номер в качестве параметра, и, в свою очередь, в базе данных должна быть выполнена хранимая процедура, которая должна проверить ее, та же самая хранимая процедура будет return Ответ, который содержит код и ответ, оба параметра должны быть представлены в json ответе на запрос, прикрепленный пример:

Ввод:

04258978417

Выход:

{ "ValidateClient": { 
    "Body": {
         "Code": "NA22001", 
          "Message": "Fecha Maxima de asignacion del cliente.", 
             }
      }
}

enter image description here

Хранимая процедура выглядит следующим образом:

CREATE PROCEDURE ValidacionClienteBonificado (p_movil varchar(11))
BEGIN

if exists (select '' from ClienteBonificados a where a.movil=p_movil) then
    if exists (select '' from ClienteBonificados a where a.contador=0 and a.movil=p_movil) then
        if (select a.fecha_fin<current_timestamp() from ClienteBonificados a where a.fecha_fin<current_timestamp() and a.movil=p_movil ) then
            select 'Fecha Maxima de asignacion del cliente' as result, 'NA22001' as code;
        else
            select 'Cliente aplica para bono' as result, '00000' as code;
        end if;
    else
        select 'Bono asignado a cliente' as result, 'NA22002' as code;
    end if;
else
    select 'Cliente no encontrado' as result, 'NA22003' as code;
end if;

В данный момент я создаю сущность, но у меня есть сомнения как разместить выходные параметры, в соответствии с тем, что я исследовал, так как он не возвращает ничего, связанного с параметрами таблицы:

table ClienteBonificados(
id int auto_increment primary key,
movil varchar(11) not null,
contador char(1) not null,
fecha_driver datetime,
fecha_alta datetime,
fecha_fin datetime,
codigo_transaccion varchar(5)
)

Тогда мой код:

package com.app.validacion.entity;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedStoredProcedureQueries;
import javax.persistence.NamedStoredProcedureQuery;
import javax.persistence.ParameterMode;
import javax.persistence.StoredProcedureParameter;
import javax.persistence.Table;

@Entity
@Table
@NamedStoredProcedureQueries({
    @NamedStoredProcedureQuery(
            name="ProcedueValidationCliente",
            procedureName="ValidacionClienteBonificado",
            parameters = {
                    @StoredProcedureParameter(mode=ParameterMode.IN, name="p_movil",type=String.class), 
                    @StoredProcedureParameter(mode=ParameterMode.OUT, name="result",type=String.class),
                    @StoredProcedureParameter(mode=ParameterMode.OUT, name="code",type=String.class),
            })

})
public class DriverBonificados {

    @Id
    private int id;
    private String movil;
    private String contador;
    private Date fecha_driver;
    private Date fecha_alta;
    private Date fecha_fin;
    private Date codigo_transaccion;

}

В этом случае ответ базы данных будет go в конфигурации @NamedStoredProcedueQueries?

У меня есть сомнения относительно того, как создать мой DAO / Repository, поскольку я это сделал, но с ответом, связанным с объектом или объектом базы данных

...