? 大家好益老,我是湯博樂是尔,這是我在簡書上第一篇android開發(fā)技術(shù)文章峻汉。寫文之前想來想去不知道寫什么烙样,最后還是推薦一款我自己開發(fā)的sqlite數(shù)據(jù)庫訪問代碼生成器冯遂。如果你覺得我的博文寫得不錯,還望您能持續(xù)關(guān)注我的博文谒获。當然也希望您能多提提意見蛤肌,讓我有更多機會進步。
1. 生成器簡介
? ? 這款代碼生成器與市面上的ORM庫(ORMLite批狱、GreenDao裸准、DBFlow等)有些不同。通常情況下赔硫,我們使用ORM庫的時候炒俱,都要通過代碼方式去構(gòu)建數(shù)據(jù)庫表格,比如ORMLite和DBFlow通過反射去逐一構(gòu)建每一張表格,或者像GreenDao一樣使用其子工程GreenDaoGenerator編寫代碼去逐一構(gòu)建每一張表格权悟。而這款代碼生成器則是通過解析現(xiàn)有的sqlite數(shù)據(jù)庫文件而后再生成訪問該數(shù)據(jù)庫文件的java代碼(包括數(shù)據(jù)表實體類砸王,數(shù)據(jù)訪問API)。這樣的好處是僵芹,我們只要使用圖形界面工具(比如SQLteStudio处硬、PowerDesigner)設(shè)計出sqlite數(shù)據(jù)庫后使用它來解析該數(shù)據(jù)庫文件,就可以輕松得到訪問該數(shù)據(jù)庫的java代碼拇派。這對于有大量數(shù)據(jù)表操作的應(yīng)用來說是很方便的荷辕。
2. 如何使用
? ? 到該代碼生成器github項目主頁Clone源代碼后,用IntelliJ開發(fā)工具(如果你使用的是Eclipse件豌,請自行拷貝源碼)打開項目疮方,把你的目標sqlite數(shù)據(jù)庫放在項目根目錄下(源碼中有一個測試Unix.db數(shù)據(jù)庫)。然后修改入口Main函數(shù)下的四行代碼茧彤,具體看下面實例:
targetDB 是你的目標數(shù)據(jù)庫骡显,它放在工程根目錄下;modelPackage是數(shù)據(jù)表映射的實體類包名曾掂;apiPackage是數(shù)據(jù)表訪問接口類包名惫谤;outDir是生成代碼的存放目錄,會在工程根目錄生成珠洗。
修改完后溜歪,run一下項目,這樣就會在項目根目錄下的文件夾gen-src生成目標代碼许蓖。最后你把目標代碼復(fù)制到你的android工程下即可蝴猪。是不是很便捷?反正我覺得真他媽的便捷膊爪。
2. 特點
(1)基于SQLiteOpenHelper自阱,支持任何復(fù)雜SQL語句。多表聯(lián)合的復(fù)雜查找操作支持很到位米酬。此外沛豌,對于要支持加密庫sqlcipher,稍微一下SQLiteOpenHelper包名即可。
(2)支持視圖赃额,支持視圖琼懊,支持視圖,重要的事情說三遍爬早。
(3)API接口包含了最常用的增刪改查接口曾沈,很容易修改和擴展
(4)自動生成數(shù)據(jù)表映射實體類(POJO類)舔示,數(shù)據(jù)訪問API,總代碼量相對于GreenDao減少60%
3. 數(shù)據(jù)訪問API使用示例
? ?以下截圖是所生成訪問API。對于目前這部分代碼空免,希望讀者能多提提意見。具體代碼請參照github項目中的AndroidExample。
4. 注意
(1)目標sqlite數(shù)據(jù)庫表中primary key必須命名為"id"(id,Id,ID都行,只要按照2中命名要求即可)
(2)目標sqlite數(shù)據(jù)庫所有表名命名要規(guī)范嚴格按照Pascal(如:CompanyDeparment) 檬输、匈牙利(Score)(如:company_deparment)、 Camel(如:companyDeparment)三種格式中的某一種規(guī)范(不允許混合使用匈棘,只能三選一)丧慈。修改入口Main函數(shù)代碼,指定你的數(shù)據(jù)表名編碼格式和數(shù)據(jù)列名編碼格式主卫,如圖:
轉(zhuǎn)載請注明出處:http://www.reibang.com/p/1872009db0ce
代碼生成器項目主頁:https://github.com/thepacific/sqlite-generator-android
微信公眾號名稱:南國IT技術(shù)園