mybatis.org/mybatis-3/ko/index.html
마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇 가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다.
마이바티스는 JDBC로 처리하는 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 대신해준다.
마이바티스는 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다.
parameterType="smartView.ai.viewModelList.model.ViewModelListVO"
resultType="int" ,resultType="map"
resultMap="ViewModelListVO-result"
parameterType 구문에 전달될 파라미터의 패키지 경로를 포함한 전체 클래스명이나 별칭
resultType 이 구문에 의해 리턴되는 기대 타입의 패키지 경로를 포함한 전체 클래스명이나 별칭. collection인 경우 collection 타입 자체가 아닌 collection 이 포함된 타입이 될 수 있다. resultType이나 resultMap을 사용하라.
resultMap 외부 resultMap resultMap의 참조명. 결과 맵은 마이바티스의 가장 강력한 기능이다. resultType이나 resultMap을 사용하라.
예시 1
<select id="selectViewModelList" parameterType="map" resultType="map">
파라미터 타입이 map이고 리솔트타입이 map이라는 것은
<!-- <resultMap id="ViewModelListVO-result" type="smartView.ai.viewModelList.model.ViewModelListVO">
<result property="projectNm" column="PROJECT_NM" javaType="java.lang.String" />
<result property="regId" column="REG_ID" javaType="java.lang.String" />
<result property="regDt" column="REG_DT" javaType="java.lang.String" />
</resultMap> -->
이렇게 이름을 선언해줄 필요도 없고
impl에서
List<Map<String, Object>> projectList = dao.selectList("ViewModelList.selectViewModelList", paramMap);
파라미터타입으로 map을 받는다는 것이고
리솔트타입으로 map으로 준다는 것이다 Map<String, Object> 이거보이지?
<select id="selectViewModelList" parameterType="map" resultType="map">
SELECT D.PROJECT_NM AS projectNm
jsp쪽에서는 AS로 만든 projectNm 이름을 쓰게 되겠지
이렇게 되면 VO도 타지 않는다.
예시 2
<select id="selectViewModelListCnt" parameterType="smartView.ai.viewModelList.model.ViewModelListVO" resultType="int">
파라미터 타입이 VO이고 리솔트타입이 int라면
VO도 만들어야하고
<resultMap id="ViewModelListVO-result" type="smartView.ai.viewModelList.model.ViewModelListVO">
<result property="projectNm" column="PROJECT_NM" javaType="java.lang.String" />
<result property="algorithmNm" column="ALGORITHM_NM" javaType="java.lang.String" />
<result property="nodeNm" column="NODE_NM" javaType="java.lang.String" />
<result property="regId" column="REG_ID" javaType="java.lang.String" />
<result property="regDt" column="REG_DT" javaType="java.lang.String" />
</resultMap
이렇게 선언을 해주고
impl에서는
int cnt = dao.selectOne("ViewModelList.selectViewModelListCnt", sViewModelListVO);
파라미터타입으로 sViewModelListVO
리솔트타입으로 int 준다.
<select id="selectViewModelList" parameterType="smartView.ai.viewModelList.model.ViewModelListVO" resultMap="ViewModelListVO-result">
SELECT D.PROJECT_NM
AS를 써줄 필요가 없는게 resultMap에서 이름 property 선언해줬다
resultMap안에 type 도 선언되있기때문에 resultType을 굳이 안적어도된다
'SQL' 카테고리의 다른 글
자주 사용하는 sql 쿼리 (0) | 2021.06.02 |
---|