본문 바로가기

DB

Mybatis - useGeneratedKeys

728x90

insert, update를 실행할 때 자동생성하는 키값을 true로 설정한다.

그러면 그 키값으로 mysql에서 조회가능하다.

 

<mapper namespace="ProjectMapper">
  
  <resultMap type="project" id="ProjectMap">
    <id column="project_no" property="no"/> 
    <result column="title" property="title"/>
    <result column="content" property="content"/>
    <result column="start_dt" property="startDate"/>
    <result column="end_dt" property="endDate"/>
    
    <association property="owner" javaType="member">
	    <id column="owner_no" property="no"/>
	    <result column="owner_name" property="name"/>
	    <result column="owner_email" property="email"/>
    </association>
    
    <collection property="members" ofType="member">
	    <id column="member_no" property="no"/>
	    <result column="member_name" property="name"/>
	    <result column="member_email" property="email"/>
    </collection>
  </resultMap>
  
  <insert id="insert" parameterType="project" 
          useGeneratedKeys="true" keyColumn="project_no" keyProperty="no">
    insert into pms_project(title,content,start_dt,end_dt,member_no) 
    values(#{title},#{content},#{startDate},#{endDate},#{owner.no})
  </insert>

 

프로젝트 : 

멤버에 일반회원이랑 의사회원이랑 나눠진다.

멤버 번호가 1, 2, 3, 4, 5... 이라면 그 중에 의사회원이 3번일 수 있고 일반회원이 1, 2, 4, 5번 일 수 있다.

그래서 자동생성하게끔 useGeneratedKeys쓴다면

apus_doctor 테이블에서 의사 회원만 조회 가능하다.

 

<insert id="insert" parameterType="member" 
   useGeneratedKeys="true" keyColumn="member_no" keyProperty="no">
    insert into apus_member(name,id,password,birth,tel,email,photo,sex,point,role)
    values(#{name},#{id},password(#{password}),#{birthDay},#{phoneNum},#{email},
     #{photo},#{sex},#{point},#{doctorOrNot})
   </insert>
   
   <insert id="insert2" parameterType="member">
   insert into apus_doctor(doctor_no,major,license,homepage,introduction)
   values(#{no},#{doctor.major},#{doctor.license},#{doctor.homepage},#{doctor.introduction})
  </insert>