sql >> Databasteknik >  >> RDS >> Mysql

hur man anropar MySQL lagrad procedur i fjäderstart med viloläge?

Du kan anropa en lagrad procedur med javax.persistence.StoredProcedureQuery. Du behöver inte ens deklarera något på din enhet.
Jag skulle föreslå att du flyttar proceduren som anropar logiken till en tjänst och sedan anropar servicemetoden från din kontrollenhet.

Till exempel:

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

Och sedan kan du anropa den här metoden från din kontrollant efter att ha injicerat din LoginService .



  1. 5 vanliga misstag att undvika när du deduperar din data

  2. Matcha utbud med efterfrågan utmaning

  3. Syntaxfel för prepareratStatement

  4. MySQLi förberedde uttalanden och ERSÄTT INTO