iOS基于ORM概念對FMDB的二次封裝(上)

一户魏、常用的數(shù)據(jù)庫解決方案

Step1:創(chuàng)建庫叼丑、創(chuàng)建表

? ? ? (1)用桌面工具(SQLiteManager)、Firefox的插件等SQLite工具生成本地?cái)?shù)據(jù)庫文件星立。系統(tǒng)運(yùn)行時(shí)檢查指定目錄是否有數(shù)據(jù)庫文件存在绰垂,如果存在則跳過直接執(zhí)行Step2劲装。不存在則講代碼包中的XXX.sqlite文件copy到指定目錄下占业,初始化DB對象纺酸,執(zhí)行Step2餐蔬。

?? ? ?(2)檢查指定目錄是否有數(shù)據(jù)庫文件存在樊诺,不存在則創(chuàng)建文件秃嗜,存在在執(zhí)行建表語句锅锨。然后執(zhí)行Step2必搞。

Step2:數(shù)據(jù)庫字段更新檢查

? ? ? 為滿足需求的拓展、變更等等霜第,我們的系統(tǒng)可能需要去修改表泌类,比如在用戶表里面加一個(gè)第三放IM的關(guān)聯(lián)末誓,這樣我們就需要新增一個(gè)字段喇澡;也比如某某字段需要增加約束等等晴玖。

? ? ?針對某某版本以下的系統(tǒng)呕屎、查詢表中是否有某一個(gè)字段,執(zhí)行具體的SQL蹂安。

Step3:數(shù)據(jù)的查詢田盈、新增允瞧、更新述暂、刪除

(1)Entity類(對應(yīng)表的字段)

(2)Model類(表的直接操作類疼蛾,提供表的增刪改查接口)

(3)DBManager(單利類,整合多個(gè)Model,提供接口調(diào)用妒挎;數(shù)據(jù)緩存處理等)

? ?但是在開發(fā)中酝掩,會(huì)發(fā)現(xiàn)總有很多的SQL語句要寫,更新表也很麻煩镶苞。昨天看到一篇針對數(shù)據(jù)庫使用ORM思想數(shù)據(jù)庫處理。頗有收獲聋涨,結(jié)合這篇文章怎么才能做到開發(fā)更方便牍白、模塊更清晰呢狸涌。

? 之前我們先了解下什么是ORM??

? ?ORM-對象關(guān)系映射(英語:Object Relation Mapping,簡稱ORM惶楼,或O/RM歼捐,或O/R mapping

二、LazyDatabase

?帶著以上的問題剥扣,學(xué)習(xí)各路大神的思路,實(shí)現(xiàn)一個(gè)簡單易用的數(shù)據(jù)庫框架晦炊。

(1)提供庫的自動(dòng)創(chuàng)建

從配置文件讀取數(shù)據(jù)庫將被存儲(chǔ)的路徑和數(shù)據(jù)庫名稱創(chuàng)建數(shù)據(jù)庫文件

(2)提供表的自動(dòng)創(chuàng)建

在實(shí)體類初始化時(shí)創(chuàng)建表,對比字段是否有更新。

(3)提供表的自動(dòng)更新

檢查數(shù)據(jù)庫大版本宋彼,是否直接升級(jí)庫文件,數(shù)據(jù)自動(dòng)拷貝莱坎。對比表的字段和現(xiàn)有字段碴卧。

(4)提供無SQL對數(shù)據(jù)的增刪改查

(5)提供數(shù)據(jù)緩存

預(yù)加載表,達(dá)到內(nèi)存上限時(shí)按隊(duì)列方式擠壓荧飞。

(6)提供接口數(shù)據(jù)緩存

網(wǎng)絡(luò)層接口返回的數(shù)據(jù),插入表時(shí)關(guān)聯(lián)URL,結(jié)合第5條運(yùn)行睛藻。

(7)提供內(nèi)存數(shù)據(jù)庫

單獨(dú)使用內(nèi)存的存儲(chǔ)方式,系統(tǒng)退出時(shí)數(shù)據(jù)清空讥邻。

?后續(xù)會(huì)更新第二篇文章兴使,提供源代碼以及實(shí)現(xiàn)思路和使用方法盹牧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末苹粟,一起剝皮案震驚了整個(gè)濱河市毛好,隨后出現(xiàn)的幾起案子找默,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚌父,死亡現(xiàn)場離奇詭異喝滞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)窘哈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門让腹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锥余,你說我怎么就攤上這事腹纳。” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵只估,是天一觀的道長志群。 經(jīng)常有香客問我,道長蛔钙,這世上最難降的妖魔是什么锌云? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮吁脱,結(jié)果婚禮上桑涎,老公的妹妹穿的比我還像新娘。我一直安慰自己兼贡,他們只是感情好攻冷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遍希,像睡著了一般等曼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凿蒜,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天禁谦,我揣著相機(jī)與錄音,去河邊找鬼废封。 笑死州泊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的漂洋。 我是一名探鬼主播遥皂,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼刽漂!你這毒婦竟也來了演训?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對情侶失蹤爽冕,失蹤者是張志新(化名)和其女友劉穎仇祭,沒想到半個(gè)月后披蕉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颈畸,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年没讲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了眯娱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡爬凑,死狀恐怖徙缴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤于样,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布疏叨,位于F島的核電站,受9級(jí)特大地震影響穿剖,放射性物質(zhì)發(fā)生泄漏蚤蔓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一糊余、第九天 我趴在偏房一處隱蔽的房頂上張望秀又。 院中可真熱鬧,春花似錦贬芥、人聲如沸吐辙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昏苏。三九已至,卻和暖如春威沫,著一層夾襖步出監(jiān)牢的瞬間捷雕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國打工壹甥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留救巷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓句柠,卻偏偏與公主長得像浦译,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子溯职,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理精盅,服務(wù)發(fā)現(xiàn),斷路器谜酒,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,085評(píng)論 25 707
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法叹俏,類相關(guān)的語法,內(nèi)部類的語法僻族,繼承相關(guān)的語法粘驰,異常的語法,線程的語...
    子非魚_t_閱讀 31,625評(píng)論 18 399
  • 六月一號(hào)是A的生日述么,她怎么會(huì)記得那么清楚呢蝌数?因?yàn)槟翘彀l(fā)生了一件令她難忘的事。在KTV幫A過完生日度秘,一群人回到A租房...
    荼蘼Gemiliy閱讀 199評(píng)論 0 1
  • 因?yàn)槊魈炱谀┛蓟耍裉焐栽缌税胄r(shí)下班,又有些工作上的不良小情緒锨咙,寒風(fēng)又是如此凜冽众羡,便想著去哪里尋一些溫暖。 ...
    一米69閱讀 1,003評(píng)論 9 14