JFinal源碼分析------Model的前世此生

嗯 好了 前幾篇博文,咱們主要是說一些初始化的東西,如今,咱們可能須要看看另外的東西了,也就是關於和數據庫相關的東西了。在Demo中的,咱們最想接觸到的除了Controller,Config以外的東西,可能就剩下Model了,不過Final好聽過了Db+record這樣的操做,不過這些不在今天的討論訪問以內,記得之前我好像說過關於Jfinal技術開發時候的GetModel的一些東西(貌似這個是Controller裏面的東西) 今天主要看看Model是如何將Modle和DAO合二爲一的(至少我這麼理解的,有錯誤的請在下面留言),我感受,這個是繼ActionMapping後的有一個兩點,由於我不用再去寫那些個該死的Bean了,各類Getter和Setter方法,簡直就是浪費生命!!java

好了 首先介紹一下這個叫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();
}

爲何要列出這幾句代碼定義??由於這個幾個屬性在整個過程當中起到了至關重要的做用,不行的話,咱們慢慢來看。解釋一下這裏相關的成員變量:數據庫

一、attr:屬性鍵值對數據結構

二、modifyFlag:修改標誌位(或者之類之類的 what ever)app

三、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幫你作吧,關於他是如何挖成這個過程的,個人博文裏好像有寫過,有興趣的親們就移步看相關文章code

既然是從數據庫的表信息中去取數據,那麼咱們確定須要使用的是一些getXxx的方法,就拿Get()方法來講,由於這個能夠取出數據庫中的各類類型數據,只要有的都能給你拿出來,源碼分析就得看源碼,有碼纔有真相:繼承

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

這個了就是拿數據庫中全部參數的東西了,attrs這個參數咱們知道是幹嗎用的了!!全部屬性的集合麼,猜一下,他的數據結構基本屬於鍵值對麼,這樣纔有可能經過傳入String的值來獲取attrs中全部對應的數據麼對吧!!

他的原理是這樣的:

一、經過DbKit.containerFactory.getAttrsMap();創建屬性map,也就是說,這個完成之後,attrs裏面就有值了

二、而後在使用get(String attr),經過對應的字符拿到對應的屬性,這樣是否是就往成了對值的索取了???

固然 在model裏面還有不少對數據庫操做的方法,好比分頁,刪除 ,更新,他的底層都是對java JDBC的簡簡單單的封裝,不過這就足夠咱們開發使用了,代碼大同小異,做爲一個合格的程序員,吃源碼 應該不是什麼問題吧!!對吧!!

最後了 給JFinal這個框架作個廣告,CSDN上面有個關於中國開源軟件的評選活動,但願廣大受益於Jfinal框架的親們能上去給Jfinal團隊投個票,我相信,JFinal團隊有無數個你,你,你,還有你的支持,必定會成爲國產開源框架的的主流支柱的!!

(PS:我沒有受過任何的廣告費用啊,純屬本身的意願,由於JFinal開啓了我開源之門,苦於技術有限,只能抓別人框架來學習,真心但願有一天可以有本身的一套框架,這樣的話,那做爲技術人員的我也就無憾了!!大牛們若是看到這個歡迎拍磚,不過要清點,由於一磚拍死了的話,OSC上就少了一個積極向上的好少年了!!真心求大牛調教!!我會不甚感激的!!)

相關文章
相關標籤/搜索