반응형
개발환경
Egov 3.7
java 1.8
mysql 8.0
Mybatis가 아닌 Ibatis를 사용해서 개발해야 하는 상황이였고 Mysql Procedure 사용 OUT변수를 가져오는 것에서 오류를 참 많이 보게 되었다.
프로시저와 ibatis의 조합이라 정보도 많이 나오지 않았다.
1. Mysql 테이블 생성

2. 테스트 데이터 입력
insert into new_table
values(1,'test1','test11'),(2,'test2','test22'),(3,'test3','test33'),(4,'test4','test44');

3. Procedure생성

CREATE DEFINER=`user`@`%` PROCEDURE `new_procedure`(
IN input2 VARCHAR(100),
IN input1 VARCHAR(100),
OUT result1 VARCHAR(100),
OUT result2 VARCHAR(100)
)
BEGIN
select * from new_table;
set result1='1';
set result2='2';
END
4. 툴에서 결과확인


5. ibatis Procedure 작성

<parameterMap id="testProcedure" class="hashMap">
<parameter property="input2" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="input1" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="result1" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
<parameter property="result2" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
</parameterMap>
<procedure id="test.testProcedure" parameterMap="testProcedure" resultClass="egovMap">
{call new_procedure(?,?,?,?)}
</procedure>
6. DAO

@SuppressWarnings("unchecked")
public List<EgovMap> testProcedure(HashMap<String,Object> param) throws Exception {
HashMap<String,Object> testParam = new HashMap<String, Object>();
testParam.put("input1", "123");
testParam.put("input2", "456");
List<EgovMap> list = (List<EgovMap>) list("test.testProcedure", testParam);
return list;
}
7. 결과값


프로시저에서 실행된 select * from new_table; 값은 list에 담기고 out파라미터(result1, result2)는 testParam에 들어간 것을 확인 할 수 있다.
ParameterMap을 따로 만들고 mode 설정만 잘해준다면 별문제없이 잘 돌아간다
반응형
'개발노트' 카테고리의 다른 글
| [ubuntu] Apache Rewrite 설정하기 (1) | 2024.05.24 |
|---|---|
| [apache2] 아파치 Mod_jk 설정 (0) | 2024.05.24 |
| [암호화]DB접속정보 암호화하기3(BASE64) (0) | 2024.03.05 |
| [암호화]DB접속정보 암호화하기2(AES) (0) | 2024.02.28 |
| [암호화]DB접속정보 암호화하기1(crypto) (1) | 2024.02.23 |