嗯 好了 前幾篇博文,咱們主要是說一些初始化的東西,如今,咱們可能須要看看另外的東西了,也就是關於和數據庫相關的東西了。在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上就少了一個積極向上的好少年了!!真心求大牛調教!!我會不甚感激的!!)