树形结构的jsp展现

树形结构的jsp展现

100000 根文件夹

110000 一级文件夹

110200 二级文件夹

最简单可以用ztree等控件

select * from 

(   

   /*select '权限树' name,'0' id,'-1' parentid from dual */

    select t.name name,t.id  id,t.parentid  parentid ,'1' leave from opm_menufolder t 

   union all select o.name name,o.id id,o.menufolderid,'2' leave  from opm_menuitem o

   union all select l.name name,l.id id,l.menuitemid ,'3' leave  from opm_menuitemlimit l

start with parentid is null connect by prior id=parentid ORDER  BY leave

 

按级别展现可以的,这种一次性查出来,对于有规律的数据结构还好(位数层级识别),可以在后台渲染好,js中渲染好,对于没有规律的不好做标记,

 

http://zhoujingxian.iteye.com/blog/935660

 

类似上述网站的jsp不好渲染(没有特殊的控件的话),有没有规律的数据可以后台用迭代递归查询,每次递归的时候打标签----这就是迭代和sql比的好处

 

如下:

select * from (select * from 

(   

   /*select '权限树' name,'0' id,'-1' parentid from dual */

    select t.name name,t.id  id,t.parentid  parentid ,'1' leave from opm_menufolder t 

   union all select o.name name,o.id id,o.menufolderid,'2' leave  from opm_menuitem o

   union all select l.name name,l.id id,l.menuitemid ,'3' leave  from opm_menuitemlimit l

start with parentid is null connect by prior id=parentid ORDER SIBLINGS BY parentid) where parentid='100000'

 

迭代中的变量是,自动会每次一个新的在回调的时候就一个个找到之前的变量,这样就可以组合累加了

 

========================

代码:

Control

@RequestMapping(value="/system/opmRole/editUi")

public String editUi(OpmRoleVo opmRole,HttpServletRequest request,Model modle) {

Map<String,Object> paramq = new HashMap<String,Object>();

paramq.put("pId", "100000");

String str0="";

String str= treeRead(paramq);//这个在页面的时候用ajax请求

System.out.println(str);

return "/system/opmUser/editUi";

 

 

 

 

@SuppressWarnings("rawtypes")

@RequestMapping(value="/system/opmRole/Auths")

@ResponseBody

public String treeRead(Map<String,Object> param){

String str="";

List<Map> map= opmMenufolderService.getfordMenuLimt(param);

Map<String,Object> param1 = new HashMap<String,Object>();

for(Map p: map){

str+=p.get("ID")+"="+p.get("NAME")+"\n";

param1.put("pId", p.get("ID"));

 

str+=treeRead(param1);

}

return str;//直接组装树形数据

}

 

 

 

Service:

@Override

public List<Map> getfordMenuLimt(Map<String,Object> param) {

// TODO Auto-generated method stub

List<Map> map = new ArrayList<>();

map= (List<Map>) opmMenufolderMapper.getfordMenuLimt(param);

return map;

}

 

 

OpmMenufolderMapper .java

public interface OpmMenufolderMapper extends Mapper<OpmMenufolder> {

 

List<?> getfordMenuLimt(Map<String,Object> param);

}

 

 

 

mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.esteel.system.mapper.OpmMenufolderMapper" >

  <resultMap id="BaseResultMap" type="com.esteel.system.bean.OpmMenufolder" >

    <!--

      WARNING - @mbggenerated

    -->

    <id column="ID" property="id" jdbcType="VARCHAR" />

    <result column="NAME" property="name" jdbcType="VARCHAR" />

    <result column="DISPLAYORDER" property="displayorder" jdbcType="DECIMAL" />

    <result column="PARENTID" property="parentid" jdbcType="VARCHAR" />

    <result column="URI" property="uri" jdbcType="VARCHAR" />

    <result column="DESCRIPTION" property="description" jdbcType="VARCHAR" />

    <result column="ICONCSS" property="iconcss" jdbcType="VARCHAR" />

    <result column="SUBSYSTEM" property="subsystem" jdbcType="VARCHAR" />

  </resultMap>

  

  <select id="getfordMenuLimt" resultType="map" parameterType="map">

    select * from (select * from 

(   

    select t.name name,t.id  id,t.parentid  parentid ,'1' leave from opm_menufolder t 

   union all select o.name name,o.id id,o.menufolderid,'2' leave  from opm_menuitem o

   union all select l.name name,l.id id,l.menuitemid ,'3' leave  from opm_menuitemlimit l

start with parentid is null connect by prior id=parentid ORDER SIBLINGS BY parentid) where parentid=#{pId}

  

  </select>

  

</mapper>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值