JFinal源码分析------Model的前世今生

嗯 好了 前几篇博文,我们主要是说一些初始化的东西,现在,我们可能需要看看另外的东西了,也就是关于和数据库相关的东西了。在Demo中的,我们最想接触到的除了Controller,Config之外的东西,可能就剩下Model了,不过Final好听过了Db+record这样的操作,不过这些不在今天的讨论访问之内,记得以前我好像说过关于Jfinal技术开发时候的GetModel的一些东西(貌似这个是Controller里面的东西)
今天主要看看Model是如何将Modle和DAO合二为一的(至少我这么理解的,有错误的请在下面留言),我感觉,这个是继ActionMapping后的有一个两点,因为我不用再去写那些个该死的Bean了,各种Getter和Setter方法,简直就是浪费生命!!

好了 首先介绍一下这个叫Model的东西,Model,看英文应该就知道这个事模型的意思,他是所有其他的Model的父类,他的定义如下:

public abstract class Model<M extends Model> implements Serializable {
    private Map<String, Object> attrs = DbKit.containerFactory.getAttrsMap();
    private Set<String> modifyFlag;
    private static final TableInfoMapping tableInfoMapping = TableInfoMapping.me();
}

为什么要列出这几句代码定义??因为这个几个属性在整个过程中起到了相当重要的作用,不行的话,我们慢慢来看。解释一下这里相关的成员变量:

1、attr:属性键值对

2、modifyFlag:修改标志位(或者之类之类的 what ever)

3、tableInfoMapping :表信息映射

当然,当我们自己的实体类继承了这个以后,我们就可以使用这个Model里面所有的方法了。通常我们都是这样写:

public class Code extends Model<Code>{
    public static final Code dao = new Code();
}

然后在这里类里面 你可以写一些对数据库的操作,或者之类的东西,这样的话,你可以完全的与你的Controller中的处理逻辑分开,what ever!!看你项目的大小来定,用这个Model类中的一些方法,可以很快的让你去完成一些操作,最理论的情况 我认为是“用JFianl,如果你的数据库结构的SQL语句写通了,就觉得你的项目已经完成了50%了(不知道这样对不对)”

反正在使用Model的时候 我用的最多的是GetModel这个方法,什么接受参数,让JFinal帮你做吧,关于他是如何挖成这个过程的,我的博文里好像有写过,有兴趣的亲们就移步看相关文章

既然是从数据库的表信息中去取数据,那么我们肯定需要使用的是一些getXxx的方法,就拿Get()方法来说,因为这个可以取出数据库中的各种类型数据,只要有的都能给你拿出来,源码分析就得看源码,有码才有真相:

public <T> T get(String attr) {
    return (T)(attrs.get(attr));
}

这个了就是拿数据库中所有参数的东西了,attrs这个参数我们知道是干嘛用的了!!所有属性的集合么,猜一下,他的数据结构基本属于键值对么,这样才有可能通过传入String的值来获取attrs中所有对应的数据么对吧!!

他的原理是这样的:

1、通过DbKit.containerFactory.getAttrsMap();建立属性map,也就是说,这个完成以后,attrs里面就有值了

2、然后在使用get(String attr),通过对应的字符拿到对应的属性,这样是不是就往成了对值的索取了???

当然 在model里面还有很多对数据库操作的方法,比如分页,删除 ,更新,他的底层都是对java JDBC的简简单单的封装,不过这就足够我们开发使用了,代码大同小异,作为一个合格的程序员,吃源码 应该不是什么问题吧!!对吧!!

最后了 给JFinal这个框架做个广告,CSDN上面有个关于中国开源软件的评选活动,希望广大受益于Jfinal框架的亲们能上去给Jfinal团队投个票,我相信,JFinal团队有无数个你,你,你,还有你的支持,一定会成为国产开源框架的的主流支柱的!!

(PS:我没有受过任何的广告费用啊,纯属自己的意愿,因为JFinal开启了我开源之门,苦于技术有限,只能抓别人框架来学习,真心希望有一天能够有自己的一套框架,这样的话,那作为技术人员的我也就无憾了!!大牛们如果看到这个欢迎拍砖,不过要清点,因为一砖拍死了的话,OSC上就少了一个积极向上的好少年了!!真心求大牛调教!!我会不甚感激的!!)

你可能感兴趣的:(Model,get,源码分析,jFinal,开源软件评选)