쏘댕

[MyBatis] 두테이블 정보를 한개의 모델로! Join 쿼리로 받기 본문

공부/Java

[MyBatis] 두테이블 정보를 한개의 모델로! Join 쿼리로 받기

ssodang 2015. 1. 9. 15:07


테이블에 매칭되는 각각의 클래스를 만들었지만,
테이블 구조와 로직 처리에 필요한 구조는 다르다.

두 테이블에 해당하는 두 클래스 중,
한 클래스가 다른 클래스를 인자로 가지고 있는 경우
JOIN으로 한개의 쿼리에 가져오고 싶다!

class는 다음과 같다.

Person.class
public class Person {
private String id;
private String name;
private int age;
private Car car;

/*
* getter/setter 생략
*/

}

Car.class
public class Car {
private String ownerId;
private String modelNo;
private String color;

/*
* getter/setter 생략
*/

}


sql mapper xml은 다음과 같다.

mapper - com.ssoniis.sample.person.xml
<resultMap type="Car" id="Car">
<result column="owner_id" property="ownerId"/>
<result column="model_no" property="modelNo"/>
<result column="color" property="color"/>
</resultMap>

<resultMap type="Person" id="Person">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<collection property="car" resultMap="Car"/>
</resultMap>

<select id="selectPersonById" parameterType="String" resultMap="Person">
SELECT p.id, p.name, p.age
  c.owner_id, c.model_no, c.color
      FROM person p
 JOIN car c
   ON p.id = c.owner_id
WHERE p.id = #{id}
</select>




Comments