如上图 , 要做一个列表。查出的数据需要 分三个级别,其中二级在一级下显示,三级在二级下显示。
比如:电脑是一级 ,然后紧接着 电脑整机 再 台式~~~
更像一个树形对吗?为什么要做成列表? 还带分页
因为设计如此。
所以此帖只讨论 如何 用sql 查出这样的结果。
是mysql 数据库
你自己不是说是一个树状图吗?还有等级;然后设计就很简单啦。在数据库表中,弄2个关键字段——等级(level)和父类(parentId);举例——》电脑的等级是0,他的父类是自己(电脑的ID);笔记本电脑的等级是1,他的父类是电脑(电脑ID)。。。。。
分层查询这样: 表头—— 一级 二级 三级 ...
select数据集 循环,判断 各个级别, 然后得出结果集
按照你的需求 难不是难在sql上,而是难在rm上,怎么将数据映射到pojo上(特指JAVA)。
简单来说 select * from xxx 就可以 只要是数据的处理
当然 你也可以这样干
create table menu(
id int primary key,
name varchar(20),
pid int references menu(id)
)
select
*
from
menu f
inner join menu s on f.id = s.pid
inner join menu t on s.id = t.pid
我用的是zTree这种插件,他是帮你显示好你要的树型结构图,其他的easyUI这种工具也可以实现你想要的形状。
说明下,下面的代码需要jquery类库的支持,如果有兴趣,还是去看看zTree的api文档
关于sql的部分,其实就是一句查询语句,其他的就没什么了
<script type="text/javascript">
var setting = {
data : {
key: {
children: "children",
name: "mname",//这里是明他的名称
},
simpleData: {
enable: true,
idKey: "mid",//这里是你的主键
pIdKey: "mpid",//这里是你的父键
},
keep: {
parent: false,
leaf: false
}
},
};
$(function () {
$.post(
"<%=request.getContextPath() %>/dept/menu.action",
{},
function (json) {
$.fn.zTree.init($("#treeDemo"), setting, json);
},
"json"
);
});
</script>
</head>
<body>
<url id="treeDemo" class="ztree"></url>
</body>