一、设计
二、实体
Privilege.java
private Long id;
private String url;
private String name;
private String icon;//导航栏图标
private Set<Role> roles;
private Privilege parent;
private Set<Privilege> children = new HashSet<Privilege>();
Role.java
<span style="white-space:pre"> </span>private Long id;
<span style="white-space:pre"> </span>private String name;
private String description;
Set<User> users = new HashSet<User>();
private Set<Privilege> privileges;//与Privilege相关联
三、映射
Privilege.hbm.xml:
<span style="white-space:pre">
</span><span style="white-space:pre"> </span><class name="Privilege" table="privilege">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="icon"/>
<property name="url"/>
<!-- roles属性,本类与Role多对多关系 -->
<set name="roles" table="itcast_role_privilege">
<key column="privilegeId"></key>
<many-to-many class="Role" column="roleId"></many-to-many>
</set>
<!-- parent属性,本类与Privilege(上级)的多对一关系 -->
<many-to-one name="parent" class="Privilege" column="parentId"></many-to-one>
<!-- children属性,本类与Privilege(下级)的一对多关系-->
<set name="children" order-by="id">
<key column="parentId"></key>
<one-to-many class="Privilege"/>
</set>
</class>
<class name="Role" table="role">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="description"/>
<!-- users属性,本类与User多对多关系 -->
<set name="users" table="itcast_user_role">
<key column="roleId"></key>
<many-to-many class="User" column="userId"></many-to-many>
</set>
<!-- privileges属性:本类与Privilege多对多关系 -->
<set name="privileges" table="itcast_role_privilege">
<key column="roleId"></key>
<many-to-many class="Privilege" column="privilegeId"></many-to-many>
</set>
</class>
四、初始化数据
按照菜单和操作来初始化数据
<span style="white-space:pre"> </span>// 权限信息
Privilege menu, menu1, menu2, menu3,menu4,menu5;
menu = new Privilege("系统管理", null, "FUNC20082.gif", null);
menu1 = new Privilege("岗位管理", "roleAction_list", null, menu);
menu2 = new Privilege("部门管理", "departmentAction_list", null, menu);
menu3 = new Privilege("用户管理", "userAction_list", null, menu);
session.save(menu);
session.save(menu1);
session.save(menu2);
session.save(menu3);
session.save(new Privilege("岗位列表", "roleAction_list", null, menu1));
session.save(new Privilege("岗位删除", "roleAction_delete", null, menu1));
session.save(new Privilege("岗位添加", "roleAction_add", null, menu1));
session.save(new Privilege("岗位修改", "roleAction_edit", null, menu1));
session.save(new Privilege("部门列表", "departmentAction_list", null, menu2));
session.save(new Privilege("部门删除", "departmentAction_delete", null,
menu2));
session.save(new Privilege("部门添加", "departmentAction_add", null, menu2));
session.save(new Privilege("部门修改", "departmentAction_edit", null, menu2));
session.save(new Privilege("用户列表", "userAction_list", null, menu3));
session.save(new Privilege("用户删除", "userAction_delete", null, menu3));
session.save(new Privilege("用户添加", "userAction_add", null, menu3));
session.save(new Privilege("用户修改", "userAction_edit", null, menu3));
session.save(new Privilege("用户初始化密码", "userAction_initPassword", null,
menu3));