父子级递归查询
1.场景:数据库用户存在父子级关系
2.需求:查询用户所有下级信息
public class DemoService implement userService{
//用户所有下级集合
List<User> allUserList = new ArrayList<>();
/**
* 递归查询所有下级
* @param uid 用户id
*/
@Override
public List<YxUser> getAllDtSpread(int uid) {
/*
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*这里mapper继承了mybatisplus的BaseMapper
*userMapper extends BaseMapper<User>
*/
//条件查询,查询父级id为传入用户id的用户集合
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("father_id",uid);
//累计父级到全局集合中
List<User> userList = userMapper.selectList(wrapper);
allUserList.addAll(userList);
if(userList!=null && userList.size()>0){
for (User user : userList) {
//递归遍历
getAllDtSpread(user .getUid());
}
}
//所有递归完成返回 全局集合
return allUserList;
}
@Override
public void clearQJInfo() {
//在控制层重复调用service中递归会产生冗余,调用递归方法前调用此清理方法(巨坑!!)
allUserList.clear();
}
}
超简单递归:
private int sum;
public int JiSuan(Integer count){
//累加
sum += count;
count--;
if(count>=0){
//递归
JiSuan(count);
}
//递归结束的返回
return sum;
}
public void Test(){
//递归计算100内>0的整数之和
JiSuan(100);
}