编程资料集中营
 | 网站首页 | 文章中心 | 编程资料2 | 软件下载 | BT下载 | 八卦星闻 | 音乐在线 | 在线游戏 | 免费电影 | 进入问吧 | 
我们只需要一个表就可以很好的实现无限子结点的树型目录结构了,,
您现在的位置: 编程资料,学习资料,c,c++,vc,vc++,java,jsp,j2ee,j2me,asp,php >> 文章中心 >> JAVA 专区 >> Hibernate 技术 >> 文章正文
【字体:
我们只需要一个表就可以很好的实现无限子结点的树型目录结构了   进入问吧

本站地址:http://www.bajiao123.com

作者:admin    文章来源:网络    点击数:    更新时间:2006-12-27    

我们只需要一个表就可以很好的实现无限子结点的树型目录结构了

简介:我们只需要一个表就可以很好的实现无限子结点的树型目录结构了 //1.持久类实现 public class Catalog implements Serializable { private Long id; private Long parentId; private String name; private Catalog parent; private Set children; public Catalog() { super(); } /** * @return */ public Set getChildren() { return children; } /** * @return */ public Long getId() { return id; } /** * @return */ public String getName() { return name; } /** * @return */ public Catalog getParent() { return parent; } /** * @param set */ public void setChildren(Set set) { children = set; } /** * @param l */ public void setId(Long l) { id = l; } /** * @param string */ public void setName(String string) { name = string; } /** * @param catalog */ public void setParent(Catalog catalog) { parent = catalog; } public String toString() { return new ToStringBuilder(this) .append("customerId", getId()) .toString(); } public boolean equals(Object other) { if ( !(other instanceof Catalog) ) return false; Catalog castOther = (Catalog) other; return new EqualsBuilder() .append(this.getId(), castOther.getId()) .isEquals(); } public int hashCode() { return new HashCodeBuilder() .append(getId()) .toHashCode(); } /** * @return */ public Long getParentId() { return parentId; } /** * @param long1 */ public void setParentId(Long long1) { parentId = long1; } } //2.配置 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <!-- com.kbarol.persistence.Catalog root --> <class name=“net.huisky.test.po.Catalog" table="catalog"> <id name="id" type="long" column="id"> <generator&nbsp;class="native"/> </id> <property name="name" column="name" type="string"/> <property name="parentId" column="parent_id" type="long"/> <set name="children" table="catalog" lazy="false" > <key column="parent_id"/> <one-to-many class="net.huisky.test.po.Catalog"/> </set> <many-to-one name="parent" insert="false" update="false" column="id" class="net.huisky.test.po.Catalog"/> </class> </hibernate-mapping> //3.数据库表设计 CREATE TABLE `catalog` (`id` INT (5) NOT NULL AUTO_INCREMENT, `name` VARCHAR (10) NOT NULL, `parent_id` INT (5) UNSIGNED DEFAULT '0' NOT NULL, PRIMARY KEY(`id`), UNIQUE(`id`), INDEX(`id`)); //4.相关测试代码 String hql="select&nbsp;catalog from&nbsp;Catalog as catalog where&nbsp;catalog.parentId=:id"; Session session=null; List list=new ArrayList(); try { session=super.openSession(false); Query q=session.createQuery(hql); q.setParameter("id",new Long(0));//查找所有根结点 list=q.list(); for(int i=0;i<parent.size();i++){ Catalog catalog=(Catalog)parent.get(i); out.println("-"+catalog.getName()+"<br>"); Iterator&nbsp;it=catalog.getChildren().iterator(); while(it.hasNext()){//这里只是循环到第二层目录,可以利用递归方法再循环下去,把下面无限制级的子目录查找出来 Catalog c=(Catalog)it.next(); out.println("-----"+c.getName()+"<br>"); Iterator&nbsp;ii=c.getChildren().iterator(); } } 来源:WEB开发资源联盟(http://www.cnpoint.com/)
作者:phpcms
原文:我们只需要一个表就可以很好的实现无限子结点的树型目录结构了(http://www.cnpoint.com/framwwork/2006/1227/content_4778.htm)

我们只需要一个表就可以很好的实现无限子结点的树型目录结构了

//1.持久类实现

public class Catalog implements Serializable {
 
 private Long id;
 
 private Long parentId;
 
 private String name;
 
 private Catalog parent;
 
 private Set children;
 
 public Catalog() {
  super();
 }

 /**
  * @return
  */
 public Set getChildren() {
&n

[1] [2] [3] 下一页

   

进入问吧

本站地址:http://www.bajiao123.com

文章录入:admin    责任编辑:admin 
高级搜索
编程资料集中营