[SPRING] 최대 절전 모드를 사용하여 봄 부팅에서 MySQL 저장 프로 시저를 호출하는 방법은 무엇입니까?
SPRING최대 절전 모드를 사용하여 봄 부팅에서 MySQL 저장 프로 시저를 호출하는 방법은 무엇입니까?
MySQL 저장 프로 시저에 로직을 작성했습니다. 최대 절전 모드에서 스프링 부트를 사용하고 있습니다. IN OUT 매개 변수를 사용한 로그인 절차가 있습니다. 로그인 절차에서 메시지를 사용자에게 전달하고 싶습니다. 그러나 스프링 부트에서 저장 프로 시저를 호출하는 방법을 모르겠습니다. 내 코드는 다음과 같습니다.
해결법
-
==============================
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.이 메소드를 사용하여 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); }
}
from https://stackoverflow.com/questions/48281009/how-to-call-mysql-stored-procedure-in-spring-boot-using-hibernate by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Springfox와 함께 Swagger UI 문서에 헤더 매개 변수 추가 (0) | 2019.09.06 |
---|---|
[SPRING] 스프링 데이터, 중첩 된 객체의 속성으로 찾기 (0) | 2019.08.17 |
[SPRING] WebMvcConfigurationSupport와 WebMvcConfigurerAdapter의 차이점 (0) | 2019.08.16 |
[SPRING] Spring Request Param에서 + (플러스)의 역 직렬화 (0) | 2019.08.15 |
[SPRING] Spring 주석 @Autowired는 어떻게 작동합니까? (0) | 2019.08.15 |