hibernate做无限极菜单树如此简单

Java代码   收藏代码
  1. package cn.isvi.entity;  
  2.   
  3. import java.util.HashSet;  
  4. import java.util.Set;  
  5.   
  6. public class Menu {  
  7.       
  8.     private Integer id;  
  9.     private String menuName;  
  10.     private String parentId;  
  11.     private Menu parentMenu;  
  12.     private Set<Menu> children=new HashSet<Menu>();  
  13.       
  14.       
  15.       
  16.     public Integer getId() {  
  17.         return id;  
  18.     }  
  19.     public void setId(Integer id) {  
  20.         this.id = id;  
  21.     }  
  22.     public String getMenuName() {  
  23.         return menuName;  
  24.     }  
  25.     public void setMenuName(String menuName) {  
  26.         this.menuName = menuName;  
  27.     }  
  28.     public String getParentId() {  
  29.         return parentId;  
  30.     }  
  31.     public void setParentId(String parentId) {  
  32.         this.parentId = parentId;  
  33.     }  
  34.     public void addMenu(Menu menu){  
  35.         children.add(menu);  
  36.         menu.parentMenu=this;  
  37.     }  
  38.   
  39.     public Set<Menu> getChildren() {  
  40.         return children;  
  41.     }  
  42.     public void setChildren(Set<Menu> children) {  
  43.         this.children = children;  
  44.     }  
  45.     public Menu getParentMenu() {  
  46.         return parentMenu;  
  47.     }  
  48.     public void setParentMenu(Menu parentMenu) {  
  49.         this.parentMenu = parentMenu;  
  50.     }  
  51. }  
Java代码   收藏代码
  1. package cn.isvi.entity;  
  2.   
  3. import java.util.HashSet;  
  4. import java.util.Set;  
  5.   
  6. public class Menu {  
  7.       
  8.     private Integer id;  
  9.     private String menuName;  
  10.     private String parentId;  
  11.     private Menu parentMenu;  
  12.     private Set<Menu> children=new HashSet<Menu>();  
  13.       
  14.       
  15.       
  16.     public Integer getId() {  
  17.         return id;  
  18.     }  
  19.     public void setId(Integer id) {  
  20.         this.id = id;  
  21.     }  
  22.     public String getMenuName() {  
  23.         return menuName;  
  24.     }  
  25.     public void setMenuName(String menuName) {  
  26.         this.menuName = menuName;  
  27.     }  
  28.     public String getParentId() {  
  29.         return parentId;  
  30.     }  
  31.     public void setParentId(String parentId) {  
  32.         this.parentId = parentId;  
  33.     }  
  34.     public void addMenu(Menu menu){  
  35.         children.add(menu);  
  36.         menu.parentMenu=this;  
  37.     }  
  38.   
  39.     public Set<Menu> getChildren() {  
  40.         return children;  
  41.     }  
  42.     public void setChildren(Set<Menu> children) {  
  43.         this.children = children;  
  44.     }  
  45.     public Menu getParentMenu() {  
  46.         return parentMenu;  
  47.     }  
  48.     public void setParentMenu(Menu parentMenu) {  
  49.         this.parentMenu = parentMenu;  
  50.     }  
  51. }  

 

Menu-hbm.xml代码   收藏代码
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5.       
  6. <hibernate-mapping package="cn.isvi.entity">  
  7.    <class name="Menu"   
  8.    table="Menu">  
  9.      <id name="id" column="id">  
  10.          <generator class="increment">  
  11.         </generator>  
  12.      </id>  
  13.        
  14.        
  15.      <property name="menuName"></property>  
  16.      <property name="parentId"></property>  
  17.       <set name="children"   
  18.         cascade="save-update" lazy="false" inverse="true">  
  19.         <key column="nc_id"></key>  
  20.         <one-to-many class="cn.isvi.entity.Menu"/>  
  21.      </set>  
  22.      <many-to-one name="parentMenu" column="nc_id"></many-to-one>  
  23.    </class>  
  24.      
  25. </hibernate-mapping>  
Menu-hbm.xml代码   收藏代码
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5.       
  6. <hibernate-mapping package="cn.isvi.entity">  
  7.    <class name="Menu"   
  8.    table="Menu">  
  9.      <id name="id" column="id">  
  10.          <generator class="increment">  
  11.         </generator>  
  12.      </id>  
  13.        
  14.        
  15.      <property name="menuName"></property>  
  16.      <property name="parentId"></property>  
  17.       <set name="children"   
  18.         cascade="save-update" lazy="false" inverse="true">  
  19.         <key column="nc_id"></key>  
  20.         <one-to-many class="cn.isvi.entity.Menu"/>  
  21.      </set>  
  22.      <many-to-one name="parentMenu" column="nc_id"></many-to-one>  
  23.    </class>  
  24.      
  25. </hibernate-mapping>  

 

测试代码   收藏代码
  1. package cn.isvi.test;  
  2.   
  3. import cn.isvi.dao.TemplateDAO;  
  4. import cn.isvi.dao.impl.TemplateDAOImpl;  
  5. import cn.isvi.entity.Menu;  
  6.   
  7. public class MenuTest {  
  8.   
  9.     /**  
  10.      * @param args  
  11.      */  
  12.     public static void main(String[] args) {  
  13.         TemplateDAO tdao=new TemplateDAOImpl();  
  14.         Menu menu=new Menu();  
  15.         menu.setMenuName("1级");  
  16.           
  17.         Menu s1=new Menu();  
  18.         s1.setMenuName("2级");  
  19.         menu.addMenu(s1);  
  20.           
  21.         Menu s2=new Menu();  
  22.         s2.setMenuName("3级");  
  23.         s1.addMenu(s2);  
  24.         try {  
  25.             tdao.saveObj(menu);  
  26.         } catch (Exception e) {  
  27.             // TODO Auto-generated catch block  
  28.             e.printStackTrace();  
  29.         }  
  30.   
  31.     }  
  32.   
  33. }  
  34. <?xml version="1.0" encoding="utf-8"?>  
  35. <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">  
  36.       
  37.     <mx:RemoteObject id="menus" destination="menus"  
  38.          endpoint="http://localhost:8400/GDGWeb/messagebroker/amf"  
  39.          result="resultHandle(event)" fault="faultHandle(event)">   
  40.           
  41.     </mx:RemoteObject>   
  42.     <mx:Script>  
  43.         <![CDATA[  
  44.             import mx.rpc.events.FaultEvent;  
  45.             import mx.rpc.events.ResultEvent;  
  46.             import mx.collections.ArrayCollection;  
  47.             [Bindable]  
  48.             private var hibernateData:ArrayCollection;  
  49.               
  50.             private function getData():void{  
  51.                 menus.getMenus();//注意,不能查询所有的Menu,只查询root第一个Menu就可以了  
  52.             }  
  53.             private function resultHandle(event:ResultEvent):void{  
  54.                 this.hibernateData=event.result as ArrayCollection;  
  55.                 trace("得到数据");  
  56.             }  
  57.             private function faultHandle(event:FaultEvent):void{  
  58.                 trace(event.message);  
  59.             }  
  60.         ]]>  
  61.     </mx:Script>  
  62.     <mx:Tree dataProvider="{hibernateData}" labelField="menuName" width="100%" height="90%">  
  63.           
  64.     </mx:Tree>  
  65.     <mx:Button label="得到数据" click="getData()">  
  66.           
  67.     </mx:Button>  
  68. </mx:WindowedApplication>  
  69.    
测试代码   收藏代码
  1. package cn.isvi.test;  
  2.   
  3. import cn.isvi.dao.TemplateDAO;  
  4. import cn.isvi.dao.impl.TemplateDAOImpl;  
  5. import cn.isvi.entity.Menu;  
  6.   
  7. public class MenuTest {  
  8.   
  9.     /**  
  10.      * @param args  
  11.      */  
  12.     public static void main(String[] args) {  
  13.         TemplateDAO tdao=new TemplateDAOImpl();  
  14.         Menu menu=new Menu();  
  15.         menu.setMenuName("1级");  
  16.           
  17.         Menu s1=new Menu();  
  18.         s1.setMenuName("2级");  
  19.         menu.addMenu(s1);  
  20.           
  21.         Menu s2=new Menu();  
  22.         s2.setMenuName("3级");  
  23.         s1.addMenu(s2);  
  24.         try {  
  25.             tdao.saveObj(menu);  
  26.         } catch (Exception e) {  
  27.             // TODO Auto-generated catch block  
  28.             e.printStackTrace();  
  29.         }  
  30.   
  31.     }  
  32.   
  33. }  
  34. <?xml version="1.0" encoding="utf-8"?>  
  35. <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">  
  36.       
  37.     <mx:RemoteObject id="menus" destination="menus"  
  38.          endpoint="http://localhost:8400/GDGWeb/messagebroker/amf"  
  39.          result="resultHandle(event)" fault="faultHandle(event)">   
  40.           
  41.     </mx:RemoteObject>   
  42.     <mx:Script>  
  43.         <![CDATA[  
  44.             import mx.rpc.events.FaultEvent;  
  45.             import mx.rpc.events.ResultEvent;  
  46.             import mx.collections.ArrayCollection;  
  47.             [Bindable]  
  48.             private var hibernateData:ArrayCollection;  
  49.               
  50.             private function getData():void{  
  51.                 menus.getMenus();//注意,不能查询所有的Menu,只查询root第一个Menu就可以了  
  52.             }  
  53.             private function resultHandle(event:ResultEvent):void{  
  54.                 this.hibernateData=event.result as ArrayCollection;  
  55.                 trace("得到数据");  
  56.             }  
  57.             private function faultHandle(event:FaultEvent):void{  
  58.                 trace(event.message);  
  59.             }  
  60.         ]]>  
  61.     </mx:Script>  
  62.     <mx:Tree dataProvider="{hibernateData}" labelField="menuName" width="100%" height="90%">  
  63.           
  64.     </mx:Tree>  
  65.     <mx:Button label="得到数据" click="getData()">  
  66.           
  67.     </mx:Button>  
  68. </mx:WindowedApplication>  
  69.    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值