java后端查询多级分类菜单
时间: 2023-09-29 11:09:46 浏览: 128
要查询多级分类菜单,可以使用递归来完成。具体实现步骤如下:
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` 方法,获取它的子菜单项列表,并将它们添加到同一个列表中。最终返回子菜单项列表。
阅读全文