4 回答

TA贡献1829条经验 获得超4个赞
如果需要使用表来维护的数据,都是很少有变动,并且很重要的数据。因为查表的速度肯定不如直接执行代码来得快。如果用代码解决,你可以使用:
1.if...else
2.switch...
3.enum..枚举值来匹配
4.?: 三目运算符来解决
或者用表驱动法
#建表语句
CREATE TABLE `resource` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`gmt_create` datetime NOT NULL COMMENT '数据新增时间',
`creator` varchar(128) NOT NULL DEFAULT '0' COMMENT '创建者',
`gmt_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据修改时间',
`modifier` varchar(128) NOT NULL DEFAULT '0' COMMENT '修改者',
`is_deleted` char(1) NOT NULL DEFAULT 'n' COMMENT '是否逻辑删除,默认为n',
`type` varchar(32) DEFAULT NULL COMMENT '资源类型',
`name` varchar(64) DEFAULT NULL COMMENT '资源名称',
`value` varchar(2048) DEFAULT NULL COMMENT '值',
`ordering` bigint(20) DEFAULT NULL COMMENT '排序',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3026 DEFAULT CHARSET=utf8 COMMENT='系统资源表';
#运行SQL:
SELECT
r.VALUE
FROM
resource r
WHERE
NAME = #{传入参数}

TA贡献1893条经验 获得超10个赞
提供一种使用表实现的思路,表定义如下:
key | method |
---|---|
所属国家 | setCountry |
葡萄酒类型 | setType |
... | ... |
代码如下:
String name=findMethodByKey(key); //查询Key对应的方法名
Method m= tblwine.getClass().getMethod(name,Object.class);
m.invoke(tblwine,value);
当然如果key是比较固定的, 建议 findMethodByKey 方法用HashMap实现, 没有必要用数据库。
也许题主是希望能动态改变对应关系,那么使用数据库存储也未尝不可。 不过为了提高执行的效率,最好可以将数据库表的信息缓存到HashMap中, 当数据库发生变更时,再更新HashMap。

TA贡献1824条经验 获得超8个赞
也可以用Java8的函数式接口
private Map<String, BiConsumer<Tblwine, String>> map = new HashMap<>();
{
map.put("所属国家 :", (tblwine, value) -> tblwine.setCountry(value));
// other...
}
调用
map.get(key).accept(tblwine, value);
添加回答
举报