树形结构的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>

猜你喜欢

转载自yuhuiblog6338999322098842.iteye.com/blog/2310824