首页 > 代码库 > 项目OA之实体类的设计
项目OA之实体类的设计
1.明天中秋啦,苦逼啊,自己一个人过啊,不过幸好有OA项目陪着也不孤单,继续做我的笔记,接着昨天的.
2.昨天笔记已经搭建好了SSH环境和SSH的整合,今天需要做的就是实体类的设计和分析,首先我们将资源结构分好建立一个config文件夹用来放置所有的配置文件,前文已经说过,注意需要放置在类路径下也就是直接在项目名右击建立sourcefolder,建立对应的jsp 存放页面,style存放样式,script存放脚本语言等等
3.根据项目的需求设计实体类,我这里是使用的starUml工具画的UML图,具体设计思路如下(实体设计很重要因为其中包括属性和各个表的之间的关联关系),我们是从系统管理做起的,其中包括用户管理,部门管理,岗位管理,具体设计如下图:
注意其中的关联关系很重要,因为等下在写hbm文件的时候,需要设置。
4.实体类设计好了以后,再根据图,写出domain对象代码如下,注意集合属性:
User
package com.icss.oa.domain; import java.util.HashSet; import java.util.Set; public class User { private long id; private Department department; private Set<Role> roles =new HashSet<Role>(); private String loginName; private String password; private String gender; private String phoneNumber; private String email; private String descrition; public long getId() { return id; } public void setId(long id) { this.id = id; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public Set<Role> getRoles() { return roles; } public void setRoles(Set<Role> roles) { this.roles = roles; } public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getDescrition() { return descrition; } public void setDescrition(String descrition) { this.descrition = descrition; } }Department
package com.icss.oa.domain; import java.util.HashSet; import java.util.Set; public class Department { private long id; private Set<User> users =new HashSet<User>(); private Department parent; private Set<Department> children; private String name; private String description; public long getId() { return id; } public void setId(long id) { this.id = id; } public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } public Department getParent() { return parent; } public void setParent(Department parent) { this.parent = parent; } public Set<Department> getChildren() { return children; } public void setChildren(Set<Department> children) { this.children = children; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }Role
package com.icss.oa.domain; import java.util.HashSet; import java.util.Set; public class Role { private long id; private String name; private String description; private Set<User> users = new HashSet<User>(); public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } }
5.根据实体类生成hbm文件,注意关联关系
User.hbm,xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.icss.oa.domain"> <class name="User" table="t_user"> <id name="id" type="long"> <column name="user_id" /> <generator class="native" /> </id> <property name="loginName" type="java.lang.String"> <column name="user_name" /> </property> <property name="password" type="string"> <column name="user_password" /> </property> <property name="gender" type="string"> <column name="user_gender" /> </property> <property name="phoneNumber" type="string"> <column name="user_phoneNumber" /> </property> <property name="email" type="string"> <column name="user_email" /> </property> <property name="descrition" type="string"> <column name="user_descrition" /> </property> <!-- department属性,本类与Department的多对一 --> <many-to-one name="department" column="departmentId" class="Department"></many-to-one> <!-- roles属性,本类与Role多对多 --> <set name="roles" table="t_user_role"> <key column="userId"></key> <many-to-many class="Role" column="roleId"></many-to-many> </set> </class> </hibernate-mapping>
Department.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.icss.oa.domain"> <class name="Department" table="t_department"> <id name="id" type="long"> <column name="department_id" /> <generator class="native" /> </id> <property name="name" type="java.lang.String"> <column name="department_name" /> </property> <!-- users属性,本类与User类的一对多 --> <set name="users"> <key column="departmentId"></key> <one-to-many class="User"/> </set> <!-- children属性,本类下级的1对多 --> <set name="children"> <key column="parentId"></key> <one-to-many class="Department"/> </set> <!-- parent属性,本类与上级的多对一 --> <many-to-one name="parent" class="Department" column="parentId"></many-to-one> </class> </hibernate-mapping>Role.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.icss.oa.domain"> <class name="Role" table="t_role"> <id name="id" type="long"> <column name="role_id" /> <generator class="native" /> </id> <property name="name" type="java.lang.String"> <column name="role_name" /> </property> <property name="description" type="string"> <column name="role_description" /> </property> <!-- users属性,本类与User多对多 --> <set name="users" table="t_user_role"> <key column="roleId"></key> <many-to-many class="User" column="userId"></many-to-many> </set> </class> </hibernate-mapping>
6.测试,如果上面的编写没有错误地话,则在数据库中就会生成相应的表运行test文件夹中的SpringTest得到如下的结果:
7.明天做Action service dao 层的设计
项目OA之实体类的设计
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。