# 개요
앞번글인 "일반 DML호출"에서 프로시저부분만 추가하였다
# 프로시저
주의점은 프로시저를 생성시 프로시저내부 구문이 오류되었을경우
단지 자바의 오류내용으로는 알기 힘들다.
따라서 프로시저는 sql tool을 이용하여 구문이 오류가 있는지 확인하여야한다.
간단히 프로시저 오류확인법은 다음과 같다.
SELECT OBJECT_NAME, STATUS
FROM USER_OBJECTS
WHERE OBJECT_NAME ='프로시저명'
# 소스
메인자바 ( 역시 to와 hashmap 방식 두가지 모두 구현했다 )
// 프로시저 호출( hashmap이용 )
HashMap<String, Object> map1 = new HashMap<String, Object>();
map1.put("SEQ", 1);
map1.put("TITLE", "재주");
map1.put("CONTENT", "ㅇ");
session.selectOne("BoardMapper.BOARD_SP", map1);
System.out.println( map1.get("ERR_CODE") );
System.out.println( map1.get("ERR_MSG") );
// 프로시저 호출( TO 이용 )
System.out.println("=====TO이용===");
Board bo2 = new Board();
bo2.setSeq(1);
bo2.setTitle("재주");
bo2.setContent("ㅇ");
session.selectOne("BoardMapper.BOARD_SP2", bo2);
System.out.println(bo2.getERR_CODE());
System.out.println(bo2.getERR_MSG());
매퍼( 주의점은 { 과 call사이 탭 허용안함. 띄어쓰기는 가능 )
<select id="BOARD_SP" statementType="CALLABLE" parameterType="hashmap" resultType="hashmap">
{call BOARD_SP(
#{SEQ, mode=IN, jdbcType=NUMERIC},
#{TITLE, mode=IN, jdbcType=VARCHAR},
#{CONTENT, mode=IN, jdbcType=VARCHAR},
#{ERR_CODE, mode=OUT, jdbcType=NUMERIC},
#{ERR_MSG, mode=OUT, jdbcType=VARCHAR}
)
}
</select>
<!-- 입력은 대소문자구분 (to의 필드값)-->
<select id="BOARD_SP2" statementType="CALLABLE"
parameterType="Board" resultType="Board">
{call BOARD_SP(
#{seq, mode=IN, jdbcType=NUMERIC},
#{title, mode=IN, jdbcType=VARCHAR},
#{content, mode=IN, jdbcType=VARCHAR},
#{ERR_CODE, mode=OUT, jdbcType=NUMERIC},
#{ERR_MSG, mode=OUT, jdbcType=VARCHAR}
)
}
</select>
'MyBatis' 카테고리의 다른 글
Mybatis resultMap 1:N 조회 ( one to many ) (0) | 2019.04.05 |
---|---|
Java - Mybatis ( 일반 DML 호출 ) (0) | 2019.04.05 |
Mybatis 동적쿼리 (0) | 2019.03.03 |
00. ( parameterType vs parameterMap ) and ( resultType vs resultMap ) (0) | 2019.03.03 |