一棵树的层次结构都在一张表内,当有这样的需要的时候。。

可以这样玩:

<!-- DepartmentDTO 对象对应 department表_查询sql -->
<sql id="department_select_sql">
with ldepartment as (
select
dept_id,
parent_id,
0 as dept_level,
row_number()over(order by getdate()) as orderid
from
department
where
(
parent_id is null
or parent_id = ''
)
union all
select
a.dept_id,
a.parent_id,
b.dept_level + 1 as dept_level,
b.orderid*100+row_number()over(order by getdate()) as orderid
from
department a,
ldepartment b
where
a.parent_id = b.dept_id
) select
t1.dept_level,
t1.orderid,
t2.paic_unique_deptid,
t2.deptid_descr,
t2.parent_id,
(select aa.deptid_descr + '('+aa.dept_id+')' from department aa where aa.dept_id=t2.parent_id ) as parent_id_desc,
t2.dept_id,
t2.ou_type,
t2.date_created,
t2.created_by,
t2.date_updated,
t2.updated_by,
t2.row_id
from ldepartment t1, department t2
where t1.dept_id = t2.dept_id
<isNotEmpty prepend="and" property="deptid_descr">
t2.deptid_descr like '%+#deptid_descr#+%'
</isNotEmpty>
<isNotEmpty prepend="and" property="parent_id">
t2.parent_id = #parent_id#
</isNotEmpty> order by ltrim(t1.orderid) // 关键点(字符串排序)
</sql>

调用:

<select id="department_find" parameterClass="java.util.Map"
resultClass="com.pasc.supms.parameter.dto.DepartmentDTO">
<include refid="department_select_sql" />
</select>

java对象:

public class DepartmentDTO extends SupmsBaseDTO {

    private String paic_unique_deptid; // 部门唯一编号
private String deptid_descr; // 部门名称
private String parent_id; // 上级部门编号
private String parent_id_desc; // 上级部门名称编号
private String dept_id; // 部门属主编号
private String ou_type; // 部门类型
private String dept_level; // 部门层级

jsp页面:

<table cellpadding="0" cellspacing="0" class="table_list_2" >
<thead align="center">
<tr>
<th >部门编号</th>
<th >部门名称</th>
<th >上级部门编号</th>
<th >部门类型</th>
</tr>
</thead>
<tbody align="center">
<c:choose>
<c:when test="${not empty pageBean.resultList}">
<c:forEach var="doc" items="${pageBean.resultList}" varStatus="i">
<tr>
<td><!-- <a href="#" onclick="detailDo('${doc.row_id}');" title="点击查看详情" class="blue"></a> -->
<c:forEach begin="1" end="${doc.dept_level }">--&nbsp;</c:forEach>
${doc.dept_id }</td>
<td>${doc.deptid_descr }</td>
<td>${doc.parent_id_desc }</td>
<td>${doc.ou_type }</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr id="noList">
<td colspan="11" align="center">对不起,暂时还没有记录!</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>

结果:

最新文章

  1. 使用easeui dialog弹出框中使用CKeditor多次加载后无法编辑问题
  2. [转][Automation]- C# SendKey代码表
  3. shell脚本中变量$$、$0等的含义
  4. JAVA-数据库连接【转】
  5. testng参数化方法:Parameters和DataProvider
  6. RTSP协议学习笔记
  7. 前端开发中的一些chrome插件推荐
  8. linux基础之Shell Script入门介绍
  9. 【转】Android出现“Read-only file system”解决办法
  10. First Bad Version
  11. Unity3D的SerializeField 序列化域名
  12. JS 点击复制Copy
  13. mapreduce 依赖组合
  14. javascript设计模式详解之命令模式
  15. 关于分布式环境下的id生成
  16. windows中启动和终止nginx的两个批处理
  17. api 25 PopupWindow会占据整个屏幕
  18. SpringMVC 面试题
  19. Django 基于类的视图(CBV)执行流程 CBV 源码分析
  20. easyui 控件获取焦点方式

热门文章

  1. windows 清理 cbs.log 文件
  2. web项目获取资源文件
  3. DB2创建EMP和DEPT并进行基础操作
  4. elasticsearch进行远程访问,所面对的问题解决方案
  5. dfs/bfs专项训练
  6. Pots(POJ-3414)【BFS】
  7. 【第一季】CH05_FPGA设计Verilog基础(二)Enter a post title
  8. Fiddler 抓包工具详解
  9. 爆long long处理方法
  10. promise, async和await