본문 바로가기

TroubleShooting/Java

Spring jdbcTemplate 를 이용해서 프로시저/함수 호출

728x90

Spring 의 jdbc Template 를 이용해서 DB 의 프로시저/함수를 호출하는 java 코드를 정리해본다.


public String CreateToken(int uid, String ip, long limitTime, boolean renew, String oldToken) {
		SqlFunction sf = new SqlFunction(dataSource, "select CreateToken(?, ?, ?, ?, ?)");

		sf.declareParameter(new SqlParameter("id", Types.INTEGER));
		sf.declareParameter(new SqlParameter("ip", Types.VARCHAR));
		sf.declareParameter(new SqlParameter("time", Types.TIME));
		sf.declareParameter(new SqlParameter("renew", Types.BIT));
		sf.declareParameter(new SqlParameter("oldtoken", Types.VARCHAR));
		sf.compile();
		
		Map inParams = new HashMap(5);
		inParams.put("id", uid);
		inParams.put("ip", ip);
		inParams.put("time", limitTime);
		inParams.put("renew", renew);
		inParams.put("oldtoken", oldToken);
		List result = sf.executeByNamedParam(inParams);
		return result.get(0);
	}

CreateToken 이라는  사용자 정의 MySQL procedure/function 에 파라미터 5개를 전달해서 결과값 중에서 첫번째 값만 return 하는 자바 코드. procedure 라도 spring 의 SqlFunction 을 사용해도 무방해 보임.