반응형

mapper

mapper파일 내용 전체를 감싸줌

<mapper namespace="mapper파일의고유별칭"></mapper>

 

DML문(insert, update, delete)

- parameterType 속성은 전달받을 값이 없으면 생략가능(속성값 공식 사이트 참고, 잘못된 속성이여도 자동수정해주긴함)
- update/delete도 insert와 동일함

- 실행결과가 처리된 행의 개수(int)이기 때문에 resultType 또는 resultMap에 대한 속성 불필요!

<insert id="sql문 식별자ID" parameterType="전달받을자바타입(풀클래스명) 또는 별칭">
    쿼리문
</insert>

 

select문

- parameterType 속성은 전달받을 값이 없으면 생략가능

- 결과값에 대한 타입을 반드시 지정, resultType(자바 자료형) 또는 resultMap(vo클래스 타입)

 

* 기존에 사용하던 ?(위치홀더) 대신 #{필드명 또는 변수명 또는 map의 키값}으로 작성

<select id="sql문 식별자ID" parameterType="전달받을자바타입(풀클래스명) 또는 별칭"
   resultType="조회결과 반환할 자바타입" 또는 resultMap="조회결과를 뽑아서 매핑할 resultMap의 id">
   쿼리문
</select>

 
resultMap

마이바티스의 핵심 기능
ResultSet으로부터 조회된 컬럼값을 하나씩 뽑아 내가 지정한 VO 객체의 각 필드에 담는 역할

ex) 기존 JDBC코드 적용시 member.setUserId(rset.getString("USER_ID"));

<resultMap id="식별자ID" type="조회된 결과를 담아 반환할 VO객체의 타입(풀클래스명) 또는 별칭">
    <result column="조회결과를 뽑을 DB컬럼명" property="결과를 담을 필드명"/>
    <result column="조회결과를 뽑을 DB컬럼명" property="결과를 담을 필드명"/>
    ...
    ...
</resultMap>

 

<?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="memberMapper">

  		<resultMap type="member" id="memberResultSet">
  			<result column="USER_NO" property="userNo"/>
  			<result column="USER_ID" property="userId"/>
  			<result column="USER_PWD" property="userPwd"/>
  			<result column="USER_NAME" property="userName"/>
  			<result column="EMAIL" property="email"/>
  			<result column="BIRTHDAY" property="birthday"/>
  			<result column="GENDER" property="gender"/>
  			<result column="PHONE" property="phone"/>
  			<result column="ADDRESS" property="address"/>
  			<result column="ENROLL_DATE" property="enrollDate"/>
  			<result column="MODIFY_DATE" property="modifyDate"/>
  			<result column="STATUS" property="status"/>
  		</resultMap>
  		
  		<select id="loginMember" resultMap="memberResultSet" parameterType="member">
  			SELECT * 
			FROM MEMBER 
			WHERE USER_ID = #{userId}
			AND USER_PWD = #{userPwd}
			AND STATUS='Y'
  		</select>
  
	  	<insert id="insertMember" parameterType="member">
	  	   INSERT 
	  	   		INTO MEMBER (
	  	   					 USER_NO,
	            	         USER_ID,
	                 	     USER_PWD,
	                    	 USER_NAME,
		                     EMAIL,
		                     BIRTHDAY,
		                     GENDER,
		                     PHONE,
		                     ADDRESS
		                     )
	            VALUES(
	            		SEQ_UNO.NEXTVAL,
	                    #{userId},
	                    #{userPwd},
	                    #{userName},
	                    #{email},
	                    #{birthday},
	                    #{gender},
	                    #{phone},
	                    #{address}
	                    )                                 
	  	</insert>
  
  </mapper>
반응형

+ Recent posts