標籤:
最近自學做東西的時候用到了一個收藏的功能,然後我想把東西存放到SQLite當中,然而自己傳值的時候都是用到的實體類,所以存起來也比較麻煩,所以從網上找到一個greenDao的開源架構非常火,不僅效率高,而且記憶體也佔用的小,非常方便。
這裡我就簡單介紹一下如何配置,至於其他的增、刪、改、查了,網上都很多,需要用到的小夥伴們自己去查吧!!
首先我們得明白,greenDao是一個Java代碼模版的快速產生器,裡面封裝好了我們實體類的各種操作。所以
1、我們要用eclipse或者Myeclipse建一個Java工程,我們需要在我們的工程下建立一個lib目錄用於放我們的兩個包(沒有的小夥伴可以去網上下載)
2、右鍵我們的工程,在彈出的菜單中選擇Properties,將我們的兩個jar包 加入到我們的工程中
3、操作完成後,我們就可以編寫代碼了,建立一個類,在裡面寫下如下代碼
package com.fanlei.greenDao;import java.io.IOException;import de.greenrobot.daogenerator.DaoGenerator;import de.greenrobot.daogenerator.Entity;import de.greenrobot.daogenerator.Schema;public class ExampleDaoGenerator { public static void main(String[] args) throws IOException, Exception { Schema schema = new Schema(1, "de.greenrobot.daoexample"); addNote(schema); new DaoGenerator().generateAll(schema, "E:\\DaoExample\\src-gen"); } private static void addNote(Schema schema) { Entity news = schema.addEntity("News"); news.addStringProperty("author"); news.addStringProperty("content"); news.addStringProperty("id"); news.addStringProperty("img"); news.addStringProperty("pagetag"); news.addStringProperty("time"); news.addStringProperty("title"); } }
首先
Schema schema = new Schema(1, "de.greenrobot.daoexample"); 是必須要有的,這個視需要建立實體類要用到的,
兩個參數 第一個是一個 版本,也就是說我們的SQLite資料庫版本,後期如果需要資料庫升級,就需要這個參數.
第二個是一個 路徑,也就是你運行完這段代碼後,產生的 .java 檔案放在的地方.
方法addNote() 是添加實體類用的,你希望產生的實體類裡面都有什麼屬性,這個需要自己去加入,屬性的類型也很全面
Entity news = schema.addEntity("News");
會產生一個 News.java檔案和NewsDao.java檔案,NewsDao.java檔案裡面封裝好了對資料庫的操作
new DaoGenerator().generateAll(schema, "E:\\DaoExample\\src-gen");
第二個參數是你希望產生的檔案存放在哪裡.這個路徑需要使用者事先去建好,否則會報異常.
最後產生的檔案除了兩個必要的.java檔案,還有就是 你的實體類和實體類的Dao.
4、最好將這幾個.java檔案考到你的android工程裡面就可以使用了,android裡面也需要一個jar包去支援,別忘了匯入進去。(沒有得網上可以下載)
5、為了防止我們總是去建立session,官方推薦我們將session的產生放到application中,然後我們可以用get方法去獲得
1 public class MyApplication extends Application { 2 3 private DaoMaster.DevOpenHelper helper; 4 private SQLiteDatabase db; 5 private DaoMaster daoMaster; 6 private DaoSession daoSession; 7 8 @Override 9 public void onCreate() {10 11 12 helper = new DaoMaster.DevOpenHelper(this,"News_info-db",null);13 db = helper.getWritableDatabase();14 daoMaster = new DaoMaster(db);15 daoSession = daoMaster.newSession();16 }17 }
6、插入操作也很簡單
private News news; private NewsDao newsDao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_news_info); getSupportActionBar().hide(); newsDao = MyApplication.getMyApplocation().getDaoSession().getNewsDao(); //拿到這麼個工具dao newsDao.insert(news); //插入到資料庫 }
若是第一次插入,則會建立一個表 表名就是類名,欄位名就是屬性名稱,這個表就是專門放News實體類的
7、其他動作請自行搜尋,或者看官方文檔
Android greenDao的簡單配置和使用