项目里有时会有类型这个概念比如说资讯类型、商家类型等等。
类型表一般是
[code="sql"]
create table stype (id int not null primary key auto_increment, parentid int ,typename varchar(50),typecode varchar(10));
insert into stype(parentid,typename,typecode) values(null,'typename1','typecode1');
[/code]
然后我在Constants.java里面 定义了一个
[code="java"]public Static final String xxcode = 'typecode1'; //这个typecode1 和数据库里的值是一样的[/code]
在代码里使用就是
[code="java"]
selectBytype(xxcode );
[/code]
这样写有一个问题就是我的Constants里面的变量要人工的和数据库里面的数据相对应,而且万一数据库中分类一多,比如说一百多几百就很容易出错。
想问下 关于分类的这种问题大家怎么处理的
[b]问题补充:[/b]
一楼二楼都是说不要硬编码,这里我主要迷惑的是:
typecode的值是已经有了的 stype 表里的typecode字段, 这个值是不会变的。
在代码里我想得到一个可以阅读的 让人知道这个什么意思的常量来代替typcode中的值。
那么如果我不在constant里面写
public Static final String FOOD_CODE = 'food';
假设当我想取得餐饮美食这个类型的数据 我该怎么在代码里面写呢?
selectBytype(//这里写什么参数);
这个看你个人编码习惯了。
你这种做法也可以,但必须保证注释清楚,否则以后维护有隐患。
另外你在同一个变量中有成百上千的分类调用时找就得找半天。
还有我说的写到数据库中,数据分类字典维护程序可以做成通用程序,不必一个分类写一个模块。
Constants里面的常量应该是从数据库中取出来的数据,可以考虑把这些类型常量放到一个Map中去,就可以方便的取了。
而不是根据数据库中的数据,自己在Constants类里面对应来硬编码的。
最好在数据库中再建立一个分类字
CategoryDic{
ID 主标识;
Name 分类名称;
Code 分类编号;(对应你的typecode)
}
这样做后台维护的时候写一个通用的分类字典维护界面就可以了
用的时候到数据库去查一下分类字典的ID,然后查出typeCode,调用selectBytype(xxcode )就可以了。
这样总比你写在变量中灵活通用一些。
这要具体看你的情况了。
[quote]selectBytype(//这里写什么参数); [/quote]
我觉得问题分两种情况:
1,这里的参数也是从数据库中来的,可能是另外一个表,比如(餐饮美食)数据表,这里的数据属于food类型,因此你可以从表中取得food这个值,然后selectBytype(//变量,其值为food)。
2,你直接在程序中硬编码来写selectBytype("food"),得到餐饮美食的数据。
这取决于你的需求了。