ibatis 조회 실체 클래스 에는 실체 클래스 가 한 쌍 이상 포함 되 어 있 습 니 다.

ibatis 조 회 를 사용 하여 생 성 된 실체 류 에 실체 류 를 포함 하 는 방법 을 조회 합 니 다.
xml 코드:
<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"   
  
"http://www.ibatis.com/dtd/sql-map-2.dtd">  
<sqlMap namespace="sys">  
    <typeAlias alias="menu" type="com.cuishen.sqlmaptest.vo.Menu" />  
    <resultMap id="sub-menu-map" class="menu">  
        <result property="id" column="subid" />  
        <result property="name" column="subname" />  
        <result property="url" column="suburl" />  
        <result property="layer" column="sublayer" />  
        <result property="grade" column="subgrade" />  
        <result property="position" column="subposition" />  
        <result property="parentId" column="subparentid" />  
    </resultMap>  
    <resultMap id="menu-map" class="menu" groupBy="id">  
        <result property="id" column="id" />  
        <result property="name" column="name" />  
        <result property="url" column="url" />  
        <result property="layer" column="layer" />  
        <result property="grade" column="grade" />  
        <result property="position" column="position" />  
        <result property="parentId" column="parentid" />  
        <result property="subMenus" resultMap="sys.sub-menu-map" />  
    </resultMap>  
  
    <select id="getTopMenu" parameterClass="java.util.HashMap" resultMap="sys.menu-map">  
    select   
    t.id as id,t.name as name,t.url as url,t.layer as layer,t.grade as grade,t.position as position,  
    t.parentid as parentid,s.id as subid,s.name as subname,s.url as suburl,s.layer as sublayer,  
    s.grade as subgrade,s.position as subposition,s.parentid as subparentid  
    from menu t left join menu s  
    on t.id = s.parentid  
    where t.layer=1 order by t.position, s.position  
    </select>  
</sqlMap>  

com.cuishen.sqlmaptest.vo.Menu 는 다음 과 같 습 니 다.
package com.cuishen.sqlmaptest.vo;  
  
import java.util.List;  
  
/** 
 * POJO -    
 * @author cuishen 
 */  
public class Menu implements java.io.Serializable {  
    private static final long serialVersionUID = 7172793340860021199L;  
  
    private Long id;  
    private String name;  
    private String url;  
    private Short layer;  
    private Short grade;  
    private Short position;  
    private Long parentId;  
    private List subMenus;  
  
    public Menu() { }  
  
    public Long getId() {  
        return this.id;  
    }  
  
    public void setId(Long id) {  
        this.id = id;  
    }  
  
    //...  
    //getter、setter    
    //...  
  
    public List getSubMenus() {  
        return subMenus;  
    }  
  
    public void setSubMenus(List subMenus) {  
        this.subMenus = subMenus;  
    }  
} 

주의: 
1.이 설정 에 주의 하 십시오:,resultMap 은 sys.sub-menu-map 입 니 다.sub-menu-map 가 아 닌 네 임 스페이스 sys 를 추가 해 야 합 니 다.그렇지 않 으 면 iBATIS 가 잘못 보고 할 수 있 습 니 다!
2.다 중/다 중 맵 의 집합 속성 subMenus 는 간단 한 getter/setter 를 사용 해 야 합 니 다.getter/setter 에서 다른 처 리 를 할 수 없습니다.그렇지 않 으 면 iBATIS 가 잘못 보고 할 수 있 습 니 다!! 
3.iBATIS 2.3.0.677 에서 테스트 를 통 과 했 습 니 다.더 오래된 버 전 은 이 해결 방안 을 지원 하지 않 을 수 있 습 니 다!!
iBATIS 3.0 부터 이 솔 루 션 의 설정 은 xlm 코드 로 바 뀌 었 습 니 다.
<resultMap id="blogResult" type="Blog">  
    <id property=”id” column="blog_id" />  
    <result property="title" column="blog_title"/>  
    <collection property="posts" ofType="Post">  
        <id property="id" column="post_id"/>  
        <result property="subject" column="post_subject"/>  
        <result property="body" column="post_body"/>  
    </collection>  
</resultMap>  

다음으로 이동:
http://cuishen.iteye.com/blog/544207

좋은 웹페이지 즐겨찾기