java 递归查询数据库
时间: 2023-08-20 19:06:10 浏览: 74
在Java中,可以使用递归算法来查询数据库的树形结构数据,例如查询某个分类下的所有子分类。
假设我们有一个Category表,其中包含id、name、parent_id三个字段,parent_id表示当前分类的父分类id,如果当前分类没有父分类,则parent_id为null。
我们可以编写一个方法来递归查询某个分类下的所有子分类:
```java
public List<Category> findSubCategories(Long parentId) {
List<Category> subCategories = new ArrayList<>();
// 查询当前分类下的所有子分类
String sql = "SELECT * FROM category WHERE parent_id = ?";
List<Category> categories = jdbcTemplate.query(sql, new Object[]{parentId}, new BeanPropertyRowMapper<>(Category.class));
for (Category category : categories) {
// 递归查询子分类的子分类
List<Category> children = findSubCategories(category.getId());
category.setChildren(children);
subCategories.add(category);
}
return subCategories;
}
```
这个方法首先查询当前分类下的所有子分类,然后对每个子分类再递归查询其子分类的子分类,直到没有更多子分类为止。
注意,在递归查询时要使用合适的终止条件,否则可能会导致无限递归。在这个例子中,如果当前分类没有子分类,则递归结束。