比如说我有一个下拉列表框中有些选项,我究竟在什么情况下直接将这些数据存入数据库,在什么情况下需要再建一个表来专门存储这些个下拉列表框的字段。
如:
下拉列表框中有“西瓜”,“苹果”,“南瓜”这样的数据的话,肯定会存一个专门的表,然后用外键来引用。
再有种情况就是下拉列表框种是常量“男”,“女”这样的数据就可以直接存入数据库我觉得。
具体什么情况下该怎么去决定列?
如:
下拉列表框中有“西瓜”,“苹果”,“南瓜”这样的数据的话,肯定会存一个专门的表,然后用外键来引用。
再有种情况就是下拉列表框种是常量“男”,“女”这样的数据就可以直接存入数据库我觉得。
具体什么情况下该怎么去决定列?
解决方案 »
- 有没有seam或是jsf的视频教程啊
- 视频下载问题
- struts的action中转向问题?
- 如何在axis的webservices上实现filter的功能
- Spring怎么体现它的非入侵性?欢迎讨论。
- jprofiler的使用指南
- 在JB中,如何将两个EJB模块中的EJB合并在一起?
- 如何绑定名字到jobss的rmiregistry服务中
- JBuilder6+weblogic编译ejb出现错误,怎么办?
- javax.persistence.Query 如何设置数组(集合)参数(spring data jpa)
- MessagingException Java发邮件
- java中Excel转成PDF的问题
也可以写成enum
public enum Sex { FEMALE("女"),MALE("男");
private String text;
Sex(String text){
this.text = text;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}“西瓜”,“苹果”,“南瓜” 这种会变动的参数可以弄成可配置项,
用一个专门的表,然后用外键来引用,
表中可以加个配置项类别的识别字段,这样一个表可以存多种可配置参数
public String getDesc(){
return "东瓜";
}
},
B{
public String getDesc(){
return "南瓜";
}
},
C{
public String getDesc(){
return "西瓜";
}
},
D{
public String getDesc(){
return "苹果";
}
},
E{
public String getDesc(){
return "辣椒";
}
},
F{
public String getDesc(){
return "西瓜";
}
};
public abstract String getDesc();
public String getName(){
return this.name();
}
}
在你的实体类中使用枚举:@Enumerated(EnumType.STRING)
@Column(length=1,nullable=false)
private Vegetable vegetable;
//这样,枚举中的A,B,C...会被映射到数据库,而当从数据库取出,又会被还原成枚举类型。所以不需要外表。在Spring MVC框架下的html表单中用<select>下拉列表来装载枚举非常简单:
<form:select path="vegetable" items="${<%=Vegetable.values()%>}" itemLabel="desc" itemValue="name">
这和JSTL表达式是一样的,desc和name对应枚举类中两个get方法名。但当用户选择“A”,后台程序如何知道是“东瓜”这个枚举,则要用到Spring的属性编辑器来做转换。