JAVA+Hibernate 无限级分类

所属分类: 软件编程 / Java编程 阅读数: 135
收藏 0 赞 0 分享
数据库结构:
Create TABLE `admin_menu` (
`menu_id` int(4) NOT NULL auto_increment,
`menu_name` varchar(50) default NULL,
`parent_id` int(4) default '0',
`menu_value` varchar(255) default NULL,
`menu_sort` int(4) default '0',
`menu_description` varchar(50) default NULL,
`isvalid` tinyint(1) default '0',
PRIMARY KEY (`menu_id`)
)

主要看menu_id和parent_id这两个字段。
Eclipse生成的表持久映射:(说明:自己加level属性,作用:为了记录种类所在深度)
public class AdminMenu implements java.io.Serializable { 
    // Fields    
     private Integer menuId;
     private String menuName;
     private Integer parentId;
     private String menuValue;
     private Integer menuSort;
     private String menuDescription;
     private Short isvalid;
     private int level;


    // Constructors

    /** default constructor */
    public AdminMenu() {
    }

/** minimal constructor */
    public AdminMenu(Integer menuId) {
        this.menuId = menuId;
    }

    /** full constructor */
    public AdminMenu(Integer menuId, String menuName, Integer parentId, String menuValue, Integer menuSort, String menuDescription, Short isvalid) {
        this.menuId = menuId;
        this.menuName = menuName;
        this.parentId = parentId;
        this.menuValue = menuValue;
        this.menuSort = menuSort;
        this.menuDescription = menuDescription;
        this.isvalid = isvalid;
    }

   
    // Property accessors

    public Integer getMenuId() {
        return this.menuId;
    }

    public void setMenuId(Integer menuId) {
        this.menuId = menuId;
    }

    public String getMenuName() {
        return this.menuName;
    }

    public void setMenuName(String menuName) {
        this.menuName = menuName;
    }

    public Integer getParentId() {
        return this.parentId;
    }

    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }

    public String getMenuValue() {
        return this.menuValue;
    }

    public void setMenuValue(String menuValue) {
        this.menuValue = menuValue;
    }

    public Integer getMenuSort() {
        return this.menuSort;
    }

    public void setMenuSort(Integer menuSort) {
        this.menuSort = menuSort;
    }

    public String getMenuDescription() {
        return this.menuDescription;
    }

    public void setMenuDescription(String menuDescription) {
        this.menuDescription = menuDescription;
    }

    public Short getIsvalid() {
        return this.isvalid;
    }

    public void setIsvalid(Short isvalid) {
        this.isvalid = isvalid;
    }

public int getLevel()
{
   return level;
}

public void setLevel(int level)
{
   this.level = level;
}

}


/**
* 查询管理员菜单

* @return
*/
public static AdminMenu[] selectAdminMenu(String condition)
{
   AdminMenu[] adminMenu = null;
   String hql = "from AdminMenu as am" + condition;
   List list = select(hql);

   Object[] o = list.toArray();
   if(o != null)
   {
    adminMenu = new AdminMenu[o.length];
    for(int i = 0; i < o.length; i++)
    {
     adminMenu[i] = (AdminMenu)o[i];
    }
   }
   return adminMenu;
}


/**
* 树的生成(主要用数组进行递归)

* @return
*/
public static ArrayList getTree(AdminMenu[] menu, int parentId, int level, ArrayList list)
{
   for(int i = 0; i < menu.length; i++)
   {
    if(menu[i].getParentId().intValue() == parentId)
    {
     menu[i].setLevel(level);
     list.add(menu[i]);
     getTree(menu, menu[i].getMenuId(), level+1, list);
    }
   }
   return list;
}
更多精彩内容其他人还在看

Tomcat数据源配置方法_JBuilder中

今天帮一同事配置一个数据源,采用tomcat5.5.9,本来是个很简单的事,以前也配过,但由于很长时间没用过容器提供的数据源了(IOC用惯了),也只记的个大概了,所以刚开始一配就出错了,google了一下,有很多资料,照着试试却都不好使(到不是别人说的不对,只是大家用的版本不同)
收藏 0 赞 0 分享

SWT(JFace)体验之ApplicationWindow

SWT(JFace)体验之ApplicationWindow
收藏 0 赞 0 分享

SWT(JFace) 体验之FontRegistry

测试代码如下:
收藏 0 赞 0 分享

SWT(JFace)体验之打开多个Form

SWT(JFace)体验之打开多个Form的实现代码。
收藏 0 赞 0 分享

SWT(JFace)体验之模拟BorderLayout布局

SWT(JFace)体验之模拟BorderLayout布局代码。
收藏 0 赞 0 分享

SWT(JFace)体验之FillLayout布局

FillLayout是非常简单的一种布局方式,它会以同样大小对父组件中的子组件进行布局,这些子组件将以一行或一列的形式排列。
收藏 0 赞 0 分享

SWT(JFace)体验之RowLayout布局

相对于FillLayout来说,RowLayout比较灵活,功能也比较强。用户可以设置布局中子元素的大小、边距、换行及间距等属性。
收藏 0 赞 0 分享

SWT(JFace)体验之GridLayout布局

GridLayout 布局的功能非常强大,也是笔者常用的一种布局方式。GridLayout是网格式布局,它把父组件分成一个表格,默认情况下每个子组件占据一个单元格的空间,每个子组件按添加到父组件的顺序排列在表格中。
收藏 0 赞 0 分享

SWT(JFace)体验之StackLayout布局

SWT(JFace)体验之StackLayout布局实现代码。
收藏 0 赞 0 分享

SWT(JFace)体验之FormLayout布局

SWT(JFace)体验之FormLayout布局示例代码。
收藏 0 赞 0 分享
查看更多