mybatis级联查询list_mybatis如何做到⼆级级联查询mybatis怎么做到⼆级级联查询?
做权限管理时候,菜单会有三级或者四级的情况。
pojo类代码⽚段如下:
public class Privilege implements Serializable{
private Long id;
private String name;
...
情人节贺卡
private List subPrivilege;
春节放烟花的作文
public List getSubPrivilege() {
return subPrivilege;
}
public void tSubPrivilege(List subPrivilege) {
this.subPrivilege = subPrivilege;
}
...
映射map⽚段如下:
lect p.* from PRIVILEGE p where p.PRIVILEGE_PARENT=#{id} order by p.PRIVILEGE_ID asc
rvice实现类中的代码⽚段如下:
尊师重道的意思public List getAllPrivilegeList() {华北蝼蛄
List firstLevelPrivilege = FirstPrivilegeList();
List allPrivList = new ArrayList();
if(firstLevelPrivilege != null && firstLevelPriv.size() != 0){
}
return allPrivList;
}
遥远的救世主读后感private void mergeSubPrivilege(List allPrivList, List currPrivList) {
for (Privilege sub_priv : currPrivList) {
allPrivList.add(sub_priv);
if (SubPrivilege() != null && SubPrivilege().size() != 0) {
mergeSubPrivilege(allPrivList, SubPrivilege());
}
相见欢李煜
}
叶下珠的功效}
问题就在这个rvice⽅法上。⽤递归调⽤组装allPrivList集合。debug发现只有PRIVILEGE_LEVEL为⼀级时候。他的subPrivilege集合属性能够查出来。再往下级递归的时候subPrivilege就都为null了。所以在页⾯上只能显⽰到⼆级⽬录,⽽三级,四级的出不来。以前项⽬都是⽤的hibernate,级联很⽅便。初次使⽤mybatis,摸索中前⾏。请⾼⼈指点!
------解决⽅案--------------------
镜像技术mybatis是轻量级的框架,⾃⼰写sql语⾔完成各种功能,但个⼈觉得⼆级查询或三四级查询,mybatis不太⽅便,当然也能做,也是⾃动封装到list中,觉得挺⿇烦,去⽹上找⼀下吧,很多的例⼦。另外做权限管理时,你也可以在程序中进⾏递归,不过性能不⼀定多好,但想想权限这东西也就这么⼗⼏条⼏⼗条的数据,这么做完全可以,性能影响并不明显。。。