본문 바로가기

자바 웹을 다루는 기술

Mybatis 프로시저 실행하기

 

mybatis에서 프로시저를 실행하기 위해서는 {}안에 call구문을 써주면되는데 cursor를 반환 하는 경우가 있다 이때는 out파라미터를 사용해야하는데 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="mapper.notice">

    <resultMap id="boardMap" type="Board">
    </resultMap>
    
    <select id="getTop5BoardList" parameterType="java.util.Map" statementType="CALLABLE">
        { call get_top5(
            #{boardtype},
            #{v_cursor, jdbcType=CURSOR, mode=OUT, javaType=java.sql.ResultSet, resultType=boardMap}
        ) }
    </select>
	
</mapper>

 

#{v_cursor, jdbcType=CURSOR, mode=OUT, javaType=java.sql.ResultSet, resultType=boardMap} 실행결과에 관한 커서를 board클래스로 매핑해서 list로 출력한다.

 

DAO에서 실행할때는 selectList()하면 바로 커서의 내용을 List로 출력할 수있다.

@Override
public List<Board> getTop5BoardList(String boardtype){
    Map<String, Object> map = new HashMap<>();
    map.put("boardtype",boardtype);
    List boardList = sqlSession.selectList("mapper.board.getTop5BoardList",map);
//	    List<Board> boardList = (List<Board>) map.get("v_cursor");
     System.out.println(boardList);
    return boardList;
}