posted by 빛그루터기 2012. 3. 28. 13:24

<insert id="insertTable" parameterType="HashMap" statementType="CALLABLE">
  { CALL procedure명 (#{a}, #{b}, #{c}, #{d}) } 
 </insert>

 

여기서 중요한 부분은 procedure를 호출 할때  statementType="CALLABLE" 를 추가해야 된다는것과

{와 CALL사이에는 한칸의 공간만 허용한다하는 것이다. 즉, { 과 CALL사이가 두칸이상 떨어졌거나

줄바꿈이 되어 있다면 procedure는 호출되지 않는다.

'프로그램 > mybatis(ibatis)' 카테고리의 다른 글

mybatis 조건 태그모음  (0) 2012.03.28
selectKey 값 DAOImpl에서 가져오기  (0) 2012.03.28
posted by 빛그루터기 2012. 3. 28. 13:24

mybatis에서 insert를 할 경우 저장 후 최종 시퀀스 값을 selectKey로 해서 넘겨주는데

이 넘겨준 값을 Spring에서 DAOImpl에서 어떻게 받느냐하면

 

mybatis에서  selectKey로 값을 넘겨 줍니다.

이때 keyProperty로 해당 값의 변수를 지정해 준다 (DTO에 해당 변수명 있어야됨)

 

<insert id="insertBoard" parameterType="newboard">
    INSERT INTO FAQ (
        B_NO, REF, STEP, B_LEVEL, NAME, SUBJ, NEWCONTENTS, HIT, REGIDATE,

        CONTENT, NOTICEYN
    ) VALUES (

        SEQ_FAQBNO.NEXTVAL, #{ref}, '0', '0', #{name}, #{subj}, #{newcontents}, '0', sysdate,

        #{newcontents}, 'N'
    )
    <selectKey resultType="int" keyProperty="b_no" order="AFTER">
        SELECT MAX(B_NO)  AS B_NO FROM FAQ

    </selectKey>
</insert>

 

 

DAOImpl 소스

다른 소스를 보면

int b_no = (int)getSqlSession().insert("newboard.insertBoard", newBoardDTO);

이렇게 되어 있는데 이렇게 하면 무조건 1로 반환되더군요;

 

아래 소스처럼 insert구분은 따로 selectKey값 받아오는것 따로입니다.

selectKey값이  해당 모델(DTO파일)의 keyProperty값과 같은 변수를 찾아 담아서 보내줍니다.

그럼 그 값을 해당 모델에서 꺼내오면 되는군요;

 

 @Override
 public int insertBoard(NewBoardDTO newBoardDTO) throws Exception {
     getSqlSession().insert("newboard.insertBoard", newBoardDTO);
     int b_no = newBoardDTO.getB_no();
     return b_no;
 } 

'프로그램 > mybatis(ibatis)' 카테고리의 다른 글

mybatis 조건 태그모음  (0) 2012.03.28
mybatis에서 procedure 호출하기  (0) 2012.03.28
posted by 빛그루터기 2012. 3. 28. 13:23

<%@ page language="java" contentType="text/html; charset=euc-kr" %>
<html>
<head>
<title>키보드 방향키로 로우셀렉트하기</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<script language="javascript">

//현재 선택된 행 번호를 hidden에 넣어준다.
function setvalue(i) {
 var obj = document.getElementById('num');
    obj.value = i;
 return false;
}

//행선택시 이벤트
function rValue(i) {
 alert("선택행이벤트"+i);
}

//방향키로 행이동시 선택된 행번호를 가지는 변수
var y=0;

//방향기 행이동 이벤트
function teclaPulsada() {
 //행(리스트) 전체 숫자에서 하나를 뺀다 (0부터 시작하게 때문에)
 var listnum = 5;
 switch (event.keyCode) {
  case 40:
   document.getElementById('tabla').rows[y].bgColor='#FFFFFF';
   if (y==listnum){y=0;} else {y++;}
   document.getElementById('tabla').rows[y].bgColor='#CC66FF';
   setvalue(y);
  break
  case 38:
   document.getElementById('tabla').rows[y].bgColor='#FFFFFF';
   if (y==0){y=listnum;} else {y--;}
   document.getElementById('tabla').rows[y].bgColor='#CC66FF';
   setvalue(y);
  break
 }
}
   
//처음 로딩시 첫번째 행 자동선택되도록 하는 이벤트
function cambiarFondo() {
    document.getElementById('tabla').rows[y].bgColor='#CC66FF';
}
</script>

</head>
<body onkeyup="teclaPulsada();" onload="cambiarFondo();" >
<form name="Accountinfo02" method="post" style="ime-mode:active;">
<!-- 현재 선택된 행번호 -->
<input type="hidden" id="num" name="num" value="0" readonly>
<table width="470" height="260" border="0" cellspacing="0" cellpadding="0" align="center">
 <tr>
  <td align='left' class="msg">&nbsp;※ 선택하세요.</td>
 </tr> 
 <tr>
  <td valign="top">
   <table width="100%" align="center" class="tblst">    
    <tr align="center" valign="middle">
     <th width="40">순번</th>
     <th width="100">아이디</th>
     <th width="330">이름</th>
    </tr>
   </table> 
   <table width="100%" align="center" class="tblst" id="tabla">
    <tr onClick="rValue(0);" style="cursor:hand">
     <td width="40" align="center">1</td>
     <td width="100" align="center">1111111</td>
     <td width="316" align="center">1111111</td>
    </tr>
    <tr onClick="rValue(1);" style="cursor:hand">
     <td width="40" align="center">2</td>
     <td width="100" align="center">2222222</td>
     <td width="316" align="center">22222222</td>
    </tr>
    <tr onClick="rValue(2);" style="cursor:hand">
     <td width="40" align="center">3</td>
     <td width="100" align="center">3333333</td>
     <td width="316" align="center">3333333</td>
    </tr>
    <tr onClick="rValue(3);" style="cursor:hand">
     <td width="40" align="center">4</td>
     <td width="100" align="center">4444444</td>
     <td width="316" align="center">4444444</td>
    </tr>
    <tr onClick="rValue(4);" style="cursor:hand">
     <td width="40" align="center">5</td>
     <td width="100" align="center">5555555</td>
     <td width="316" align="center">5555555</td>
    </tr>
    <tr onClick="rValue(5);" style="cursor:hand">
     <td width="40" align="center">6</td>
     <td width="100" align="center">6666666</td>
     <td width="316" align="center">6666666</td>
    </tr>
   </table>
  </td>
 </tr>
</table>
</form>
</body>
</html>