在orm框架中,比如hibernate和mybatis都可以设置关联对象,比如user对象关联dept
假如查询出n个user,那么需要做n次查询dept,查询user是一次select,查询user关联的
dept,是n次,所以是n+1问题,其实叫1+n更为合理一些。
优化的做法
//一次性查询所有的数据
List<Z> zs = xxxxx
List<Z> zresult = xxxxx
//将数据组合父子关系
For(Z z : zs){//子菜单
z child = z;
Int pid = child.getPid();
if(pid==0){
zresult.add(z);
}else{
For(Z iz : zs){
Int id = iz.getId();If(id == pid){
//父菜单
Z pz = iz;
//组合父子菜单
Pz.getChildren().add(child);
break;
}
}
}