现在Jfinal是通过ActiveRecord插件然后做Model和表的映射。
如:arp.addMapping("blog", Blog.class);
// 映射blog 表到 Blog模型
这样还需要创建一个class:Blog extends Model<Blog>
如果初始化的时候:
做一个arp.addMapping("blog", "Blog");
//blog做为ModelKey Blog为表名
然后初始化的时候,后台创建一个Map来存储ModelKey和对应的Model(初始化时完成主键,表字段和类型的设置)
,这样我们就可以通过Model blog = Dao.get("blog");
方式获取,即通过ModelKey获取对应的Model(类似以前的Blog.class)。
个人认为这样可以省去Model层的创建,更符合JFinal的设计思想。
下面是Dao的简单代码(Init时完成daoMap的初始化):
public class Dao {
//来存储ModelKey和Model
private static final Map<String, Model> daoMap = new HashMap<String, Model>();
public void add(String dao, Model model) {
daoMap.put(dao, model);
}
public static Model get(String dao) {
return daoMap.get(dao);
}
}
可能个人建议并不成熟,有问题还请多多指出。
我的意思Blog实际就是一个Model 只是里面的TableInfo不一样~所以没必要为每个Model单独创建一个Class。其实完全可以存在一个Map里面去取。
public static Model getModel(String modelKey) {
TableInfo tableInfo = tableInfoMap.get(modelKey);
if (tableInfo == null) {
return null;
}
Model newModel = new Model();
newModel.setTableInfo(tableInfo);
return newModel;
}
这样完全可以通过Model blog = getModel("blog")
取到对应的Model。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。