实体类封装
查询方法
连接查询
select
c1.id as 'id1',
c1.category_name as 'category_name1',
c1.category_level as 'category_level1',
c1.parent_id as 'parent_id1',
c1.category_icon as 'category_icon1',
c1.category_slogan as 'category_slogan1',
c1.category_pic as 'category_pic1',
c1.category_bg_color as 'category_bg_color1',
c2.id as 'id2',
c2.category_name as 'category_name2',
c2.category_level as 'category_level2',
c2.parent_id as 'parent_id2',
c3.id as 'id3',
c3.category_name as 'category_name3',
c3.category_level as 'category_level3',
c3.parent_id as 'parent_id3'
from category c1
inner join category c2 on c1.id = c2.parent_id
left join category c3 on c2.id = c3.parent_id
where c1.category_level = 1;
MyBatis实现
<resultMap id="CategoryMap" type="com.monologue.entity.Category">
<id column="id1" property="id"/>
<result column="category_name1" property="categoryName"/>
<result column="category_level1" property="categoryLevel"/>
<result column="parent_id1" property="parentId"/>
<result column="category_icon1" property="categoryIcon"/>
<result column="category_slogan1" property="categorySlogan"/>
<result column="category_pic1" property="categoryPic"/>
<result column="category_bg_color1" property="categoryBgColor"/>
<collection property="categories" ofType="com.monologue.entity.Category">
<id column="id2" property="id"/>
<result column="category_name2" property="categoryName"/>
<result column="category_level2" property="categoryLevel"/>
<result column="parent_id2" property="parentId"/>
<collection property="categories" ofType="com.monologue.entity.Category">
<id column="id3" property="id"/>
<result column="category_name3" property="categoryName"/>
<result column="category_level3" property="categoryLevel"/>
<result column="parent_id3" property="parentId"/>
</collection>
</collection>
</resultMap>
<select id="queryCategoryAll" resultMap="CategoryMap">
select
c1.id as 'id1',
c1.category_name as 'category_name1',
c1.category_level as 'category_level1',
c1.parent_id as 'parent_id1',
c1.category_icon as 'category_icon1',
c1.category_slogan as 'category_slogan1',
c1.category_pic as 'category_pic1',
c1.category_bg_color as 'category_bg_color1',
c2.id as 'id2',
c2.category_name as 'category_name2',
c2.category_level as 'category_level2',
c2.parent_id as 'parent_id2',
c3.id as 'id3',
c3.category_name as 'category_name3',
c3.category_level as 'category_level3',
c3.parent_id as 'parent_id3'
from category c1
inner join category c2 on c1.id = c2.parent_id
left join category c3 on c2.id = c3.parent_id
where c1.category_level = #{categoryLevel};
</select>
测试
这种方法有一个弊端,必须明确知道有几级分类,所以下面介绍另一种方法
子查询
<resultMap id="CategoryMap_" type="com.monologue.entity.Category">
<id column="id" property="id"/>
<result column="category_name" property="categoryName"/>
<result column="category_level" property="categoryLevel"/>
<result column="parent_id" property="parentId"/>
<result column="category_icon" property="categoryIcon"/>
<result column="category_slogan" property="categorySlogan"/>
<result column="category_pic" property="categoryPic"/>
<result column="category_bg_color" property="categoryBgColor"/>
<collection property="categories" column="id" select="com.monologue.mapper.CategoryMapper.queryCategoryAll2"/>
</resultMap>
<select id="queryCategoryAll2" resultMap="CategoryMap_">
select
<include refid="selectFields"/>
from `category`
where parent_id = #{parentId}
</select>