쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/mybatisTest에 올려두었습니다.
<resultMap>
- 조회컬럼과 Domain의 setter method를 개발자가 미리 Mapping 하는 것
- 조회컬럼과 setter method의 이름이 같지 않아도 값을 넣을 수 있다.
<resultMap id="아이디" type="">
<result column="컬럼명" property="setter명" jdbcType="오라클의데이터형" javaType="자바의데이터형"/>
.
.
<!-- clob데이터형-->
<result column="컬럼명" property="setter명" jdbcType="clob" javaType="java.lang.String"/>
</resultMap>
- 주의사항은 resultType에 사용하면 error 발생
<select id="" resultMap="resultMap 아이디" parameterType="">
* 조회결과를 저장하는 resultType과 resultMap는 하나만 사용할 수 있다.
- resultType="Domain, 단일형"
- resultMap="resultMap아이디"
동적 쿼리
- OGNL( Object Graph Navigation Language ) : 태그를 사용하면 태그에 맞는
언어의 문법을 찾아서 실행하는 언어
- if, choose, foreach 등을 지원
- select문 where을 동적으로 생성
- <where> : where절이 필요할 때에 정의된다.
* 비교 <if>
<if test=" getter 또는 입력 값 연산자 비교할 값">
조건에 맞을 때 수행할 문장
</if>
- 사원명이 null이 아니면 해당 사원을 조회하고, 그렇지 않으면 모든 사원 조회
* <choose>
- 여러 조건을 비교할 때
<choose>
<when test="조건식">
조건에 맞을 때 수행될 쿼리문
</when>
.
.
<otherwise>
모든 조건이 맞지 않을 때 수행 될 쿼리문
</otherwise>
</choose>
* <foreach>
- 값을 반복 해서 쿼리를 만들 때 ( in )
- 값은 List, 배열에 들어가고 Map을 통해서 MyBatis Framework로 전달된다.
- open이 한번 나오고 item과 seperator가 반복 출력 된 후 close가 나온 후 반복 종료
<foreach collection="map key" index="index" open="시작기호" item="변수명"
separator="구분자" close="끝기호">
#{ item }
</foreach>
- 입력된 부서번호(하나)와 직무(여러 개)에 해당하는 사원 조회
1. Map 생성
Map<String,Object> map=new HashMap<String,Object>();
List<String> list=new ArrayList<String>);
list.add("SALESMAN");
list.add("MANAGER");
list.add("CLERK");
map.put("deptno", 10);
map.put("job_list", list);
2. Handler에 Map 전달
List<EmpDomain> list= ss.selectList("아이디", map);
3. MyBatis Framework에서 Parsing
<select id="아이디" resultType="EmpDomain" parameterType="java.util.HashMap">
select 컬럼명,...
from 테이블명
<where>
deptno=#{ deptno } and
<foreach collection="job_list" item="job" index="i" separator="," open="(" close=")">
#{ job }
</foreach>
</where>
</select>
'성장 일기 > 쌍용교육센터' 카테고리의 다른 글
마지막 정리 (0) | 2023.06.06 |
---|---|
0518/ <typeAlias>, 쿼리문 태그(<, >) 처리 (0) | 2023.05.25 |
0517/MyBatis에서 CRUD 사용 (0) | 2023.05.25 |
0516/MyBatis 설정, properties (0) | 2023.05.17 |
0515/DI, 의존성 주입 종류 (0) | 2023.05.15 |