Spring Framework
|
2020. 1. 6. 23:39
[Spring] 스프링 SimpleJdbcCall 이용하여 프로시저 호출해서 out 파라미터 얻기
스프링 SimpleJdbcCall 이용하여 프로시저 호출해서 out 파라미터 얻기
SimpleJdbcCall을 이용하면 프로시저 호출을 간단하게 할 수 있습니다.
만약 MS-SQL을 기준으로 dbo.sp_get_user_info라는 프로시저의 파라미터가 다음과 같이 있다고 가정했을때 이 프로시저는 두개의 입력 파라미터를 받아 두개의 출력 파라미터에 결과를 리턴합니다.
dbo.sp_get_user_info
@UserNo varchar(10) IN,
@Name varchar(10) IN,
@Age int OUT,
@Grade varchar(10) OUT
대략적인 코드는 다음과 같습니다. SimpleJdbcCall은 java.sql.DataSource 객체를 의존하므로 생성시 주입해주어야 합니다.
public class UserService {
@Autowired
public DataSource dataSource;
public void printUserInfo() {
String userNo = "7";
String name = "kim";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("UserNo", userNo);
paramMap.put("Name", name);
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(dataSource);
jdbcCall.withSchemaName("dbo");
jdbcCall.withProcedureName("sp_get_user_info");
Map<String, Object> result = null;
try {
result = jdbcCall.execute(paramMap);
} catch (UncategorizedSQLException e) {
throw new BadRequestException(e.getMessage());
}
System.out.println((int) result.get("Age"));
System.out.println((String) result.get("Grade"));
}
}
입력 파라미터는 java.util.Map 타입으로 key를 프로시저의 입력(IN) 파라미터명으로 하여 설정하고 프로시저를 호출할때 넘깁니다. 프로시저 호출 결과가 정상적으로 처리되어 리턴된다면 결과 역시 java.util.Map 타입으로 리턴됩니다.
result = jdbcCall.execute(paramMap);
출력(OUT) 파라미터는 execute() 메서드를 실행한 결과 Map에서 파라미터명을 key로 하여 얻을 수 있습니다.
System.out.println((int)result.get("Age"));
System.out.println((String)result.get("Grade"));
'Spring Framework' 카테고리의 다른 글
도로락
WriterIT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그