多级分类列表查询

实现思路

在数据库中,使用parent_id标签,将父id和子列表关联起来。
在这里插入图片描述

面包屑导航

实现思路将浏览的记录,标记放到$scope中进行保存,用entity1,entity2…进行区分

1

修改 itemCatController.js

$scope.grade=1;//默认为 1 级

//设置级别

$scope.setGrade=function(value){

$scope.grade=value;

}

//读取列表

$scope.selectList=function(p_entity){

if($scope.grade==1){//如果为 1 级

$scope.entity_1=null;

$scope.entity_2=null;

}

if($scope.grade==2){//如果为 2 级

$scope.entity_1=p_entity;

$scope.entity_2=null;

}

if($scope.grade==3){//如果为 3 级

$scope.entity_2=p_entity;

}
}
 
$scope.findByParentId(p_entity.id);
 


2

修改列表的查询下级按钮,设定级别值后 显示列表,
如果grade!=3显示这个按钮

<span ng-if="grade!=3">

<button type="button" class="btn bg-olive btn-xs"
ng-click="setGrade(grade+1);selectList(entity)">查询下级</button>

</span>

3

绑定面包屑

<ol class="breadcrumb">

<li><a href="#" ng-click="grade=1;selectList({id:0})">顶级分类列表</a></li>

<li><a href="#" ng-click="grade=2;selectList(entity_1)">{{entity_1.name}}</a></li>

<li><a href="#" ng-click="grade=3;selectList(entity_2)">{{entity_2.name}}</a></li>

</ol>


查询多级分类菜单,可以使用递归来完成。具体实现步骤如下: 1. 定义一个菜单项类,包含菜单的id、名称、父级id等属性。 2. 编写一个SQL语句,从数据库中获取所有的菜单项,并将它们存储在一个列表中。 3. 在Java代码中,使用JDBC连接数据库,执行SQL语句并将结果集映射为菜单项列表。 4. 编写一个递归函数,传入当前菜单项的id和菜单项列表。函数的作用是返回当前菜单项下的子菜单项列表。 5. 在递归函数中,对于当前菜单项,遍历菜单项列表,找到它的子菜单项,并将它们添加到一个新的列表中。 6. 对于每个子菜单项,递归调用函数,获取它的子菜单项列表,并将它们添加到同一个列表中。 7. 返回子菜单项列表。 以下是一个简单的Java代码示例,实现查询多级分类菜单: ```java public class MenuItem { private int id; private String name; private int parentId; // getters and setters } public class MenuDao { private static final String SELECT_ALL_SQL = "SELECT * FROM menu"; public List<MenuItem> getAllMenuItems() { List<MenuItem> items = new ArrayList<>(); try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password")) { try (Statement stmt = conn.createStatement()) { try (ResultSet rs = stmt.executeQuery(SELECT_ALL_SQL)) { while (rs.next()) { MenuItem item = new MenuItem(); item.setId(rs.getInt("id")); item.setName(rs.getString("name")); item.setParentId(rs.getInt("parent_id")); items.add(item); } } } } catch (SQLException e) { e.printStackTrace(); } return items; } public List<MenuItem> getMenuItemsByParentId(int parentId) { List<MenuItem> subMenu = new ArrayList<>(); List<MenuItem> items = getAllMenuItems(); for (MenuItem item : items) { if (item.getParentId() == parentId) { subMenu.add(item); subMenu.addAll(getMenuItemsByParentId(item.getId())); } } return subMenu; } } // 使用示例 MenuDao dao = new MenuDao(); List<MenuItem> items = dao.getMenuItemsByParentId(0); // 获取根菜单下的子菜单列表 ``` 这里的 `getMenuItemsByParentId` 方法是一个递归方法,用于获取指定菜单项下的所有子菜单项。在方法中,首先获取所有的菜单项列表,然后遍历这个列表,找到指定菜单项的子菜单项,并将它们添加到一个新的列表中。对于每个子菜单项,递归调用 `getMenuItemsByParentId` 方法,获取它的子菜单项列表,并将它们添加到同一个列表中。最终返回子菜单项列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值