论坛首页 Java企业应用论坛

ibatis 中如何将一张自关联的表只知道子类ID怎样才能查出所有的父类name

浏览 2161 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-08  
ibatis 中如何将一张自关联的表只知道子类ID怎样才能查出所有的父类name

比如电子商务:这张分类表(TYPE)的id是作为商品表(goods)的外键,

我要查询商品表并要输出分类的名称以及其父类的name和父类父类的name(商品是三级分类的),

分类表中的字段为TypeId ,basTypeId,name 这几个字段( basTypeId为父类id),

商品表是id,name ,typeid(分类表中id外键关联) 这几个字段。

我只知道goods中的fid 我如何写ibatis中sql语句去查询分类中三个分类的名称 。
GOODS中的sql
  <resultMap id="GoodsResult" class="Goods">
        <result property="Id" column="ID"/>
        <result property="TypeId" column="TYPE_ID"/>
        <result property="name" column="NAME"/>
        <result property="Type" column="TYPE_ID" select="Type_NS.getTypeById"/>
    </resultMap>
   <sql id="GOODS_TBL_columns">
           GOODS_TBL.ID,
           GOODS_TBL.TYPE_ID,
           GOODS_TBL.NAME
        </sql>
    <sql id="GOODS_TBL_properties">
            #Id#,
            #TypeId#,
            #name#
        </sql>
  <select id="getGoods" resultMap="Goods_NS.GoodsResult"
            parameterClass="QueryQuestionCondition">
        <include refid="public_sql.page_begin"/>
SELECT
        <include refid="GOODS_NS.GOODS_TBL_columns"/>
        FROM GOODS_TBL
        WHERE 1=1
        <isNotEmpty property="TypeId" prepend="AND">
            TYPE_ID  IN (
            SELECT TYPE_ID FROM TYPE_TBL WHERE
            <isNotEmpty property="sonId">
                TYPE_ID =#sonId#
            </isNotEmpty>
            <isEmpty property="sonId">
                FTYPE_ID=#TypeId#
            </isEmpty>
            )
        </isNotEmpty>
    <include refid="public_sql.page_end"/>
    </select>

Type中的sql
  <resultMap id="TypeResult" class="Type">
        <result property="TypeId" column="_TYPE_ID"/>
        <result property="basTypeId" column="BAS_TYPE_ID"/>
        <result property="name" column="NAME"/>
        <result property="basType" column="BAS_TYPE_ID"    select="Type_NS.getTypeById"/>
        <result property="sonTypeCount" column="TYPE_ID" select="Type_NS.getSonTypeCount"/>
    </resultMap>
    <sql id="TYPE_TBL_columns">
            TYPE_TBL.TYPE_ID,
            TYPE_TBL.BAS_TYPE_ID,
            TYPE_TBL.NAME
        </sql>

    <sql id="TYPE_TBL_properties">
            #TypeId#,
            #basTypeId#,
            #name#
        </sql>
    <select id="getTypeById" resultMap="Type_NS.TypeResult"
            parameterClass="java.lang.String">
        SELECT
        <include refid="Type_NS.TYPE_TBL_columns"/>
        FROM TYPE_TBL
        WHERE
        TYPE_ID = #value#
    </select>
这样写只能查询出上一级的分类name再上一级的怎么查询呢?
   发表时间:2011-10-08  
不会用ibatis 请高手指导一下啊!!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics