开发者社区> 问答> 正文

关于JFinal Model初始化建议

现在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);
      }
}

可能个人建议并不成熟,有问题还请多多指出。

展开
收起
小旋风柴进 2016-06-08 10:46:39 2416 0
1 条回答
写回答
取消 提交回答
  • 我的意思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。

    2019-07-17 19:31:22
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
introduction to Apache Bean 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载