表驱动,如何在表中存储一个方法

想将下面的代码用表驱动的方法实现,应该怎么创建这个“表”呢


    if(key.equals("所属国家 :")) {

        tblwine.setCountry(value);

    }

    else if(key.equals("葡萄酒类型 :")) {

        tblwine.setType(value);

    }

    else if(key.equals("规格 :")) {

        tblwine.setSize(value);

    }

    else if(key.equals("酒精度 :")) {

        tblwine.setPercent(value);

    }

    else if(key.equals("葡萄品种 :")) {

        tblwine.setPtype(value);

    }

    else if(key.equals("生产年份 :")) {

        tblwine.setYear(value);

    }


狐的传说
浏览 597回答 4
4回答

浮云间

如果需要使用表来维护的数据,都是很少有变动,并且很重要的数据。因为查表的速度肯定不如直接执行代码来得快。如果用代码解决,你可以使用:1.if...else2.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.VALUEFROM    resource rWHERENAME = #{传入参数}

白猪掌柜的

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

有只小跳蛙

也可以用Java8的函数式接口&nbsp; &nbsp; private Map<String, BiConsumer<Tblwine, String>> map = new HashMap<>();&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; map.put("所属国家 :", (tblwine, value) -> tblwine.setCountry(value));&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; // other...&nbsp; &nbsp; }调用map.get(key).accept(tblwine, value);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java