sql >> Database teknologi >  >> RDS >> Mysql

hvordan man kalder MySQL lagret procedure i spring boot ved hjælp af dvale?

Du kan kalde en lagret procedure ved hjælp af javax.persistence.StoredProcedureQuery. Du behøver ikke engang at erklære noget på din enhed.
Jeg vil foreslå, at du flytter proceduren, der kalder logikken til en tjeneste og derefter kalder servicemetoden fra din controller.

For eksempel:

@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
    }
}

Og så kan du kalde denne metode fra din controller, efter at have injiceret din LoginService .



  1. SQLite - Opret en database

  2. Omarranger tabelkolonner i Oracle

  3. PostgreSQL Omvendt LIKE

  4. Fuldtekst og sammensatte indekser og hvordan de påvirker forespørgslen