<resultMap class="Category" id="categoryAndInfoResult" groupBy="cid">
<result column="cid" property="cid"/>
<result column="cname" property="cname"/>
<result property="infos" resultMap="Category.infoResult"/>
</resultMap>
<resultMap class="java.util.HashMap" id="infoResult">
<result property="mid" column="mid"/>
<result property="mtitle" column="mtitle"/>
</resultMap>
<select id="getCategoryAndInfo" parameterClass="String" resultMap="categoryAndInfoResult">
select c.*, m.id mid, m.title mtitle from category c , classify_msg m where m.m_cid = c.cid and c.cid in ($value$)
</select>
上面就是一个N+1的解决方案。但现在我的问题在于,我查询的是同一个表 Category 。Category保存所有的类别,之间有“层级”的关系。我现在想要做的是,根据“级别”,比如:根据“一级栏目”查询,同时查询自对应的“二级栏目”。       <sqlMap namespace="Category">       <!-- 映射Category的结果集 -->
<resultMap class="Category" id="categoryResult">
<result column="cid" property="cid"/>
<result column="cname" property="cname"/>
<result column="cdesc" property="cdesc"/>
<result column="cgrade" property="cgrade"/>
<result column="cpid" property="cpid"/>
<result column="cpath" property="cpath"/>
</resultMap> <!-- 根据cids,查询类别,及其“子类” -->
<resultMap class="Category" id="categoryAndChildrenResult"  groupBy="cid">
<result column="cid" property="cid"/>
<result column="cname" property="cname"/>
<result column="cdesc" property="cdesc"/>
<result column="cgrade" property="cgrade"/>
<result column="cpid" property="cpid"/>
<result column="cpath" property="cpath"/>
<result property="children" resultMap="Category.categoryResult"/>
</resultMap>


<select id="queryCategoryByCids" parameterClass="String" resultMap="categoryAndChildrenResult">
select * from category p left join category c on p.cid = c.cpid where p.cid in ($value$)
</select>

结果:但结果始终不对。只是“父级栏目”的信息。可是没有找到错误的地方?请大家指点下!谢谢