728x90

 

마이바티스 최대 특징 중 하나 : 쿼리를 태그화 시킨 것

코드가 많이 줄고 편하다

 

DOCTYPE 설정

<!DOCTYPE mapper .... >

앞으로 DOCTYPE 다음 어떤 타입인지 나오므로 잘 확인하자

나머지는 코드 복붙해서 쓰면된다

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

 

1. 최상위 태그 <mapper>

namespace속성

마이바티스 설정파일(config.xml)에 등록한 매퍼파일의 값을 넣는 속성(element)

자바에서 어느 매퍼를 쓸지 알 수 있게 해주는 역할

<mapper namespace="memberMapper">
</mapper>

 

2. 쿼리문 태그 : <select>,<insert>,<update>,<delete>

이후로 나오는 태그들은 sql에서 썼던 CRUD의 명령어들이 태그화 된 것이므로 그대로 쓰면 되고,

속성(element)만 추가하면 된다

<mapper namespace="memberMapper">
	<select id="loginMember" parameterType="member.model.vo.Member" > 
     	쿼리문 내용
        ex)
            SELECT * 
            FROM MEMBER 
            WHERE USER_ID = #{userId} AND USER_PWD = #{userPwd} 
    </select>
</mapper>

1)id : 쿼리문의 고유 아이디(유일한 구분자)
   - mapper태그 안에 쿼리가 엄청 여러개이기 때문에 각각을 구분할 pk역할을 하는 id속성이 필요
 2)parameterType : 클래스의 풀네임 또는 (설정되었다면)별칭
 3)resultType : 반환받을 데이터의 데이터타입 지정
  - 쿼리 실행 후 나온 결과(ex:ResulSet) 옮겨 담을 객체를 정해주는 것

 

3.<resultMap>

vo클래스 필드명(담을 객체의 필드명)과 sql컬럼명 매핑시켜주는 태그

resultMap태그 속성값

1) type : 클래스 풀네임or별칭
2) id : pk역할. 이 resultMap이 어느 resultMap맵인지 식별용

<resultMap type="Member" id="memberResultSet">

 

resultMap 하위 태그

1)id태그 : pk역할(기본키) 하는 얘가 들어감.
- column : DB의 컬럼명
- property : 매핑 시킬 자바 vo의 필드명
2)result태그 : 일반 컬럼이 들어감

<!-- PK(기본키) -->
<id column="USER_ID" property="userId"/>
<!-- 일반 컬럼 -->
<result column="USER_PWD" property="userPwd"/>

 

<resultMap> 전체코드

<resultMap type="Member" id="memberResultSet">

		<!-- PK(기본키) -->
		<id column="USER_ID" property="userId"/>
		<!-- 일반 컬럼 -->
		<result column="USER_PWD" property="userPwd"/>
		<result column="USER_NAME" property="userName"/>
		<result column="NICKNAME" property="nickName"/>
		<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="UPDATE_DATE" property="updateDate"/>
		<result column="M_STATUS" property="mStatus"/>
	</resultMap>

 

 

 

728x90
반응형
728x90

회원가입, 조회, 내 정보 보기, 수정, 탈퇴

 

db랑 다르게 쿼리문 맞쳤다는 세미콜론 안들어감

<?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">
	<!-- 회원가입 : insert태그 -->
	<insert id="insertMember" parameterType="Member"> <!-- parameterType : 쿼리에 전달될 데이터의 타입 지정 -->
		insert into member
		values (#{userId}, #{userPwd}, #{userName}, #{nickName}, #{email}, #{birthDay}, #{gender}, #{phone}, #{address}, sysdate, sysdate, default)
	</insert>

	<!-- 내정보보기 수정 -->
	<update id="updateMember" parameterType="Member">
			update member
			set user_name = #{userName}, nickName = #{nickname}, email = #{email}, birthDay = #{birthDay},
				gender = #{gender}, phone = #{phone}, address = #{address}
			where user_id = #{userId}
	</update>
	
	
	<!-- 비번 수정 -->
	<update id="updatePwd" parameterType="java.util.HashMap"> <!-- parameterType="hashMap"도 가능. 마바 내장별칭 때문 -->
		update member
		set user_pwd = #{newPwd} 
		where user_id = #{id} and user_pwd = #{oldPwd}
	</update>
	
	
	<!-- 회원탈퇴 -->
	<update id="deleteMember" parameterType="string"> <!--string : 마이바티스 내장 별칭 string==String  -->
		update member
		set status = 'N' 
		where user_id = #{userId}
	</update>


</mapper>

 

728x90
반응형

+ Recent posts