Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie rufe ich gespeicherte MySQL-Prozeduren im Spring Boot mit Ruhezustand auf?

Sie können eine gespeicherte Prozedur mit javax.persistence.StoredProcedureQuery aufrufen. Sie müssen nicht einmal etwas auf Ihrer Entität deklarieren.
Ich würde vorschlagen, die Prozeduraufruflogik in einen Dienst zu verschieben und dann die Dienstmethode von Ihrem Controller aus aufzurufen.

Zum Beispiel:

@Service
public class LoginServiceImpl implements LoginService {

    @PersistenceContext
    private EntityManager entityManager;

    public Boolean checkUsernameAndPassword(String username, String password) {

        //"login" this is the name of your procedure
        StoredProcedureQuery query = entityManager.createStoredProcedureQuery("login"); 

        //Declare the parameters in the same order
        query.registerStoredProcedureParameter(1, String.class, ParameterMode.IN);
        query.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
        query.registerStoredProcedureParameter(3, Integer.class, ParameterMode.OUT);
        query.registerStoredProcedureParameter(4, String.class, ParameterMode.OUT);

        //Pass the parameter values
        query.setParameter(1, username);
        query.setParameter(2, password);

        //Execute query
        query.execute();

        //Get output parameters
        Integer outCode = (Integer) query.getOutputParameterValue(3);
        String outMessage = (String) query.getOutputParameterValue(4);

        return true; //enter your condition
    }
}

Und dann können Sie diese Methode von Ihrem Controller aus aufrufen, nachdem Sie Ihren LoginService eingefügt haben .