在日常业务中,二级菜单会涉及到一级排序和二级排序,这里说一下思路
1. 在数据库设计时,设置排序字段
2. 设置父类code字段,用于查询菜单分级
3. 添加字段的设置,父类排序字段和子类排序字段需要分别添加排序号,父类为一组,子类为一组,比如添加的是父类,就查询父类的最大编号,进行添加
数据库设计
查询思路
1. 通过mybatis二级查询,先查询父类的编号,可以进行父类排序,再通过父类编号查询子类信息,进行子类编号
SQL
<resultMap id="findItemProperty" type="com.alibaba.fastjson.JSONObject">
<result column="property_name" property="propertyName"/>
<collection property="children" ofType="com.alibaba.fastjson.JSONObject" column="property_code" javaType="List" select="findItemPropertyChild">
</collection>
</resultMap>
<select id="findItemProperty" resultMap="findItemProperty" parameterType="Map">
SELECT
ip.property_name,
ip.property_code
FROM
item_property ip
WHERE
ip.category_code = #{categoryCode}
AND ip.property_parent_code = '0'
AND ip.website_code = #{websiteCode}
ORDER BY
ip.display_sequence ASC
</select>
<resultMap id="findItemPropertyChildMap" type="com.alibaba.fastjson.JSONObject">
<result column="property_code" property="propertyCode"/>
<result column="property_option" property="accessPath"/>
<result column="pn" property="propertyName"/>
</resultMap>
<select id="findItemPropertyChild" resultMap="findItemPropertyChildMap" parameterType="String">
SELECT
property_code,
property_option,
property_name pn
FROM
item_property
WHERE
property_parent_code = #{propertyCode}
ORDER BY
display_sequence ASC
</select>
来源:oschina
链接:https://my.oschina.net/u/4466912/blog/4877538