比較简单的方式就是依据模仿同类产品,依据同类产品的进行模仿,表单就是一个起码要加的字段,然后依据项目须要额外添加字段。
注意:实体类之间的引用关系还须要考虑性能的影响。如:单向或是双向。
表设计:
设计好后:
写实体类
建立实体类到数据库的关联关系
概述
5.实体关系分析
1.类结构:带箭头是单线关联,不带箭头是双向关联
----------------------------------------
class User
(1)
{{ {
{
Integer id ;
Integer id ; Integer id ; Integer id ;
...... ... ...
User user ; Survey survey ; Page page ;
Set pages ; Set questions ;
}} }
}
2.表结构
------------------------------------------------------------------
[users]
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| email | varchar(50) | YES | | NULL | |
| password | varchar(50) | YES | | NULL | |
| nickname | varchar(50) | YES | | NULL | |
| regdate | datetime | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
[surveys]
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(200) | YES | | NULL | |
| pretext | varchar(50) | YES | | NULL | |
| nexttext | varchar(50) | YES | | NULL | |
| exittext | varchar(50) | YES | | NULL | |
| donetext | varchar(50) | YES | | NULL | |
| createtime | datetime | YES | | NULL | |
| userid | int(11) | YES | MUL | NULL | |
+---------------+--------------+------+-----+---------+----------------+
[pages]
+-------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(200) | YES | | NULL | |
| description | varchar(200) | YES | | NULL | |
| surveyid | int(11) | YES | MUL | NULL | |
+-------------+---------------+------+-----+---------+----------------+
[questions]
+---------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| questiontype | int(11) | YES | | NULL | |
| title | varchar(200) | YES | | NULL | |
| options | varchar(200) | YES | | NULL | |
| other | bit(1) | YES | | NULL | |
| otherstyle | int(11) | YES | | NULL | |
| otherselectoptions | varchar(200) | YES | | NULL | |
| matrixrowtitles | varchar(200) | YES | | NULL | |
| matrixcoltitles | varchar(200) | YES | | NULL | |
| matrixselectoptions | varchar(200) | YES | | NULL | |
| pageid | int(11) | YES | MUL | NULL | |
+---------------------+--------------+------+-----+---------+----------------+
3.映射文件
------------------------------------------
[User.hbm.xml]
/p>
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
[Survey.hbm.xml]
[Page.hbm.xml]
[Question.hbm.xml]
具体代码例如以下:
Page.java
package com.atguigu.surveypark.model;
import java.util.HashSet;
import java.util.Set;
/**
* 页面类
*/
public class Page {
private Integer id;
private String title = "未命名";
private String description;
//简历从Page到Survey之间多对一关联关系
private Survey survey;
//简历从Page到Question之间一对多关联关系
private Set questions = new HashSet<>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Survey getSurvey() {
return survey;
}
public void setSurvey(Survey survey) {
this.survey = survey;
}
public Set getQuestions() {
return questions;
}
public void setQuestions(Set questions) {
this.questions = questions;
}
}
Page.hbm.xml:
/p>
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
Survey.java
package com.atguigu.surveypark.model;
import java.util.Date;
/**
* 调查类
*/
public class Survey {
private Integer id;
private String title = "未命名";
private String preText = "上一步";
private String nextText = "下一步";
private String exitText = "退出";
private String doneText = "完毕";
private Date createTime = new Date();
//建立从Survey到User之间多对一关联关系
private User user ;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPreText() {
return preText;
}
public void setPreText(String preText) {
this.preText = preText;
}
public String getNextText() {
return nextText;
}
public void setNextText(String nextText) {
this.nextText = nextText;
}
public String getExitText() {
return exitText;
}
public void setExitText(String exitText) {
this.exitText = exitText;
}
public String getDoneText() {
return doneText;
}
public void setDoneText(String doneText) {
this.doneText = doneText;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}Survey.hbm.xml:
/p>
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
Question.java:
package com.atguigu.surveypark.model;
/**
* 问题类
*/
public class Question {
//
private Integer id;
// 题型0-8
private int questionType;
//
private String title;
// 选项
private String options;
// 其它项
private boolean other;
// 其它项样式:0-无 1-文本框 2-下拉列表
private int otherStyle;
// 其它项下拉选项
private String otherSelectOptions;
// 矩阵式行标题集
private String matrixRowTitles;
// 矩阵式列标题集
private String matrixColTitles;
// 矩阵是下拉选项集
private String matrixSelectOptions;
//建立从Question到Page之间多对一关联关系
private Page page;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public int getQuestionType() {
return questionType;
}
public void setQuestionType(int questionType) {
this.questionType = questionType;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getOptions() {
return options;
}
public void setOptions(String options) {
this.options = options;
}
public boolean isOther() {
return other;
}
public void setOther(boolean other) {
this.other = other;
}
public int getOtherStyle() {
return otherStyle;
}
public void setOtherStyle(int otherStyle) {
this.otherStyle = otherStyle;
}
public String getOtherSelectOptions() {
return otherSelectOptions;
}
public void setOtherSelectOptions(String otherSelectOptions) {
this.otherSelectOptions = otherSelectOptions;
}
public String getMatrixRowTitles() {
return matrixRowTitles;
}
public void setMatrixRowTitles(String matrixRowTitles) {
this.matrixRowTitles = matrixRowTitles;
}
public String getMatrixColTitles() {
return matrixColTitles;
}
public void setMatrixColTitles(String matrixColTitles) {
this.matrixColTitles = matrixColTitles;
}
public String getMatrixSelectOptions() {
return matrixSelectOptions;
}
public void setMatrixSelectOptions(String matrixSelectOptions) {
this.matrixSelectOptions = matrixSelectOptions;
}
public Page getPage() {
return page;
}
public void setPage(Page page) {
this.page = page;
}
}
Question.hbm.xml
/p>
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
User.java
package com.atguigu.surveypark.model;
import java.util.Date;
/**
* 用户类
*/
public class User {
private Integer id;
private String email;
private String name;
private String password;
private String nickName;
//注冊时间
private Date regDate = new Date();
public Integer getId() {
return id;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
public void setId(Integer id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
}
User.hbm.xml:
/p>
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">