MyBatis 实现多级菜单
Contents
entity
package com.wgymt.jxc.entity;
import lombok.Data;
import java.util.List;
/**
* 商品类别VO
*/
@Data
public class GoodsTypeVO {
private Integer goodsTypeId;
private String goodsTypeName;
private Integer pId;
private Integer goodsTypeState;
private List<GoodsTypeVO> children;
}Dao
package com.wgymt.jxc.dao;
import com.wgymt.jxc.entity.GoodsTypeVO;
import java.util.List;
public interface GoodsTypeDao {
// 返回根目录
List<GoodsTypeVO> selectGoodsTypeTree();
// 根据父级菜单获取子菜单(二级.三级...)
List<GoodsTypeVO> selectChildrenTree(Integer pId);
}service
package com.wgymt.jxc.service;
/**
* 商品类别
*/
public interface GoodsTypeService {
// 商品分类树形展示
String getGoodsTypeTree();
}mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wgymt.jxc.dao.GoodsTypeDao">
<resultMap id="goodsTypeVOMap" type="com.atguigu.jxc.entity.GoodsTypeVO">
<id column="goods_type_id" property="goodsTypeId"/>
<result column="goods_type_name" property="goodsTypeName"/>
<result column="p_id" property="pId"/>
<result column="goods_type_state" property="goodsTypeState"/>
<collection property="children" ofType="com.atguigu.jxc.entity.GoodsTypeVO" select="selectChildrenTree"
column="goods_type_id"/>
</resultMap>
<select id="selectGoodsTypeTree" resultMap="goodsTypeVOMap">
SELECT goods_type_id,
goods_type_name,
p_id,
goods_type_state
FROM t_goods_type
WHERE p_id = -1
</select>
<select id="selectChildrenTree" resultMap="goodsTypeVOMap">
SELECT goods_type_id,
goods_type_name,
p_id,
goods_type_state
FROM t_goods_type
WHERE p_id = #{goodsTypeId}
</select>
</mapper>