oracle 根据子节点取出父节点sql
(1)今天在做项目的时候,有一个需求,需要根据子节点求出父节点的值.
sql语句为:
SELECT g.id FROM T_DICT g START WITH g.id in (283) CONNECT BY PRIOR g.PARENT_ID = g.id
上面sql中,283是三级节点,以此可以取出相应的2级,和1级节点的值.
(2)另一个需求,我是用ztree做的树形结构,要求将其限制在3级以内.
具体的代码为:
页面
// 使用ajax进行验证
$.ajax({
type: 'POST',
async :true,
url: 'system/dict!validateId.action',
data: 'id='+$('#saveId').val(),
dataType: 'text',
success: function(data) {
//alert(data);
if(parseInt(data.toString()) >= 3){ alert('不允许在3级节点下创建子节点!');
}else{
var saveDictType = $("#saveDictType").val();
$("#addDictType").val(saveDictType);
$("#addStatus").val(1);
$("#divSCA").OpenDiv();
}
},
error: function(data) {
alert('验证失败!');
}
});
Action中的内容:
/**
*
* @Description: 验证数据字典id是否为第三级
* @Author:aa00aa00
*/
public String validateId(){
int count = dictManager.getCountByDictID(id);
try {
Struts2Utils.getResponse().getWriter().print(count);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
service中的内容:
/**
*
* @Name: getCountByDictID
* @Description: 查询数据字典3级节点
* @Author: aa00aa00(作者)
*/
public int getCountByDictID(Long id) {
return dictDao.getCountByDictID(id);
}
dao中的内容:
/**
*
* 查询数据字典3级节点
*/
public int getCountByDictID(Long id) {
// 构造sql语句
final String sql = "SELECT * FROM T_DICT g START WITH g.id in (?) CONNECT BY PRIOR g.PARENT_ID = g.id";
// 执行查询
Query query = getSession().createSQLQuery(sql).addEntity(Dict.class);
query.setParameter(0, id);
int count = 0;
List list = query.list();
// list非空判断
if(list != null && list.size() > 0){
count = list.size();
}
// 返回值
return count;
}
这样在页面,在树形结构的三级节点下面,在创建子节点时候,会提示信息.
aa00aa00
分享到:
相关推荐
- **CONNECT BY**:定义了如何从父节点连接到子节点的方式,即确定层级之间的关系。 通过结合使用这两个关键字,我们可以轻松地从表中获取出树状结构的数据,这对于管理组织架构、产品分类等具有明显层级关系的数据...
一个常见的设计是使用一个基本表,其中包含节点ID(用于唯一标识菜单项),节点名称(显示的菜单标题),父节点ID(表示当前菜单项的父级菜单ID),以及一个标志字段来指示该节点是否为叶子节点(即是否有子菜单)。...
实例045 通过子窗体刷新父窗体 47 实例046 拖动无边框窗体 51 1.14 其他技术 52 实例047 禁用窗口上的关闭按钮 52 实例048 实现动态系统托盘图标 53 实例049 实现气泡提示窗口 54 第2章 控件应用 56 2.1 ...
实例045 通过子窗体刷新父窗体 47 实例046 拖动无边框窗体 51 1.14 其他技术 52 实例047 禁用窗口上的关闭按钮 52 实例048 实现动态系统托盘图标 53 实例049 实现气泡提示窗口 54 第2章 控件应用 56 2.1 ...
实例045 通过子窗体刷新父窗体 47 实例046 拖动无边框窗体 51 1.14 其他技术 52 实例047 禁用窗口上的关闭按钮 52 实例048 实现动态系统托盘图标 53 实例049 实现气泡提示窗口 54 第2章 控件应用 56 2.1 ...
实例045 通过子窗体刷新父窗体 47 实例046 拖动无边框窗体 51 1.14 其他技术 52 实例047 禁用窗口上的关闭按钮 52 实例048 实现动态系统托盘图标 53 实例049 实现气泡提示窗口 54 第2章 控件应用 56 2.1 ...
首先,必须定义一个能够从连接池中抽取出本地数据库JDBC对象(如OracleConnection,OracleResultSet等)的抽取器:nativeJdbcExtractor,这样才可以执行一些特定数据库的操作。对于那些仅封装了Connection而未包括...