Open ybkim-dev opened 2 years ago
MyBatis는 Entity에 DB에서 가져온 결과를 자동 매핑외에 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="sample.mybatis"> <resultMap id="testTableResultMap" type="sample.mybatis.TestTable"> <id property="id" column="id" /> <result property="value" column="value" /> </resultMap> <select id="selectTest" resultMap="testTableResultMap"> select * from test_table </select> </mapper>
resultMap 태그를 사용해서 검색 결과와 Java Class 간의 매핑을 정의
id 태그로 식별자 속성을 정의
result 태그로 각 column의 매핑을 정의
<?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="sample.mybatis"> <resultMap type="sample.mybatis.TestTable" id="testTableResultMap"> <id property="id" column="id" /> <result property="string" column="string" /> <association property="embedded" javaType="sample.mybatis.Embedded"> <result property="number" column="number" /> </association> </resultMap> <select id="selectTest" resultMap="testTableResultMap"> select * from test_table </select> </mapper>
association 태그를 사용해서 애트리뷰트가 클래스인 경우 매핑 정의
property 태그는 Entity의 property, 태그는 Database의 column
<?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="sample.mybatis"> <resultMap type="sample.mybatis.Foo" id="fooResultMap"> <id property="id" column="id" /> <!-- collection 태그를 사용한다. --> <collection property="barList" ofType="sample.mybatis.Bar"> <id property="id" column="bar_id" /> </collection> </resultMap> <select id="selectFoo" resultMap="fooResultMap"> select foo.id ,bar.id bar_id from foo_table foo ,bar_table bar where bar.foo_id = foo.id </select> </mapper>
collection 태그를 사용해서 List 표현
ofType 속성으로 리스트가 될 클래스 설정
<?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="sample.mybatis"> <resultMap type="sample.mybatis.Base" id="baseResultMap"> <id property="id" column="id" /> <result property="commonValue" column="common_value" /> <discriminator javaType="int" column="type"> <case value="1" resultType="sample.mybatis.Hoge"> <result property="value" column="hoge_value" /> </case> <case value="2" resultType="sample.mybatis.Fuga"> <result property="value" column="fuga_value" /> </case> </discriminator> </resultMap> <select id="selectBase" resultMap="baseResultMap"> select * from base_table </select> </mapper>
discriminator, case 태그를 사용해서 조건을 지정할 column을 설정하고(type), 특정 조건에 따라 상속받은 클래스를 resultType으로 지정
case 식에 존재하지 않는 조건 값의 경우 부모 클래스의 애트리뷰트들만 매핑됨
MyBatis는 Entity에 DB에서 가져온 결과를 자동 매핑외에 resultMap을 사용해서 수동으로 매핑 지원
resultMap 태그를 사용해서 검색 결과와 Java Class 간의 매핑을 정의
id 태그로 식별자 속성을 정의
result 태그로 각 column의 매핑을 정의
Has One 관계 매핑
association 태그를 사용해서 애트리뷰트가 클래스인 경우 매핑 정의
property 태그는 Entity의 property, 태그는 Database의 column
Has Many 관계 매핑
collection 태그를 사용해서 List 표현
ofType 속성으로 리스트가 될 클래스 설정
상속 관계에 있는 클래스 동일 데이터베이스에서 매핑하기
discriminator, case 태그를 사용해서 조건을 지정할 column을 설정하고(type), 특정 조건에 따라 상속받은 클래스를 resultType으로 지정
case 식에 존재하지 않는 조건 값의 경우 부모 클래스의 애트리뷰트들만 매핑됨