복붙노트

[SPRING] 최대 절전 모드를 사용하여 봄 부팅에서 MySQL 저장 프로 시저를 호출하는 방법은 무엇입니까?

SPRING

최대 절전 모드를 사용하여 봄 부팅에서 MySQL 저장 프로 시저를 호출하는 방법은 무엇입니까?

MySQL 저장 프로 시저에 로직을 작성했습니다. 최대 절전 모드에서 스프링 부트를 사용하고 있습니다. IN OUT 매개 변수를 사용한 로그인 절차가 있습니다. 로그인 절차에서 메시지를 사용자에게 전달하고 싶습니다. 그러나 스프링 부트에서 저장 프로 시저를 호출하는 방법을 모르겠습니다. 내 코드는 다음과 같습니다.

해결법

  1. ==============================

    1.javax.persistence.StoredProcedureQuery를 사용하여 스토어드 프로 시저를 호출 할 수 있습니다. 당신은 당신의 엔티티에 아무것도 선언 할 필요가 없습니다. 프로 시저 호출 논리를 서비스로 이동 한 다음 컨트롤러에서 서비스 메소드를 호출하는 것이 좋습니다.

    javax.persistence.StoredProcedureQuery를 사용하여 스토어드 프로 시저를 호출 할 수 있습니다. 당신은 당신의 엔티티에 아무것도 선언 할 필요가 없습니다. 프로 시저 호출 논리를 서비스로 이동 한 다음 컨트롤러에서 서비스 메소드를 호출하는 것이 좋습니다.

    예를 들어 :

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

    그런 다음 LoginService를 주입 한 후 컨트롤러에서이 메소드를 호출 할 수 있습니다.

  2. ==============================

    2.이 메소드를 사용하여 Spring에서 프로 시저를 호출 할 수 있습니다

    이 메소드를 사용하여 Spring에서 프로 시저를 호출 할 수 있습니다

    import java.util.HashMap;
    import java.util.Map;
    import oracle.jdbc.driver.OracleTypes;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.SqlOutParameter;
    import org.springframework.jdbc.core.SqlParameter;
    import org.springframework.jdbc.core.simple.SimpleJdbcCall;
    
    public class MainApplicationMethod 
    
    {
    
    public static void main(String[] args) throws Exception {
    
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
    
        SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("procedureName");
        jdbcCall.addDeclaredParameter(new SqlParameter("parameter1", OracleTypes.VARCHAR));
        jdbcCall.addDeclaredParameter(new SqlOutParameter("outParam1",OracleTypes.VARCHAR));
        String value=null;
        Map<String, String> callParams = new HashMap<String, String>();
        callParams.put("parameter1", value);
    
        Map<String, Object> outputMap = jdbcCall.execute(callParams);
    }
    

    }

  3. from https://stackoverflow.com/questions/48281009/how-to-call-mysql-stored-procedure-in-spring-boot-using-hibernate by cc-by-sa and MIT license