【MyBatis】二级菜单分别排序

泪湿孤枕 提交于 2021-01-04 22:27:15

在日常业务中,二级菜单会涉及到一级排序和二级排序,这里说一下思路

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>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!