數據庫開源框架之GreenDAO


主頁: https://github.com/greenrobot/greenDAOjava


配置: 添加如下依賴
* compile 'de.greenrobot:greendao:2.1.0'
* compile 'de.greenrobot:greendao-generator:2.1.0'android


優勢:
* 性能最大化,內存開銷最小化
* 易於使用的API
* 爲Android進行高度優化git



重要類

DaoMaster:它保存了sqlitedatebase對象以及操做DAO classes(注意:不是對象)。其提供了一些建立和刪除table的靜態方法,其內部類OpenHelper和DevOpenHelper實現了SQLiteOpenHelper並建立數據庫的框架。

DaoSession:會話層。操做具體的DAO對象(注意:是對象),好比各類getter方法。

XXXDao:實際生成的某某DAO類,一般對應具體的java類,好比NoteDao等。其有更多的權限和方法來操做數據庫元素。

XXXEntity:持久的實體對象。一般表明了一個數據庫row的標準java properties。

github


使用步驟sql

1.建立自定義的DAOGenerater,指定數據庫相關配置並生成相關類數據庫

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;

/**
 * Description:幫助生成操做數據的一些Java類

 */

public class CustomHelper {

    public static void main(String[] args) throws Exception {
        //第一個參數表示數據庫版本號,
        //若是發生變動會致使數據庫更新的操做被調用(若是不修改生成的DaoMaster中的方法
          //升級默認操做是刪除全部表並從新建表)
        //第二個參數是生成的DAO類的包路徑
        Schema schema = new Schema(1, "com.itheima.greendao.db");

        // 建立表,參數爲表名
        Entity entity = schema.addEntity("Info");
        // 爲表添加字段
        entity.addIdProperty().primaryKey().autoincrement(); //自增加id爲主鍵
        entity.addStringProperty("name").notNull();//非null字段
        entity.addIntProperty("age");//Int類型字段
        entity.addStringProperty("tel");// String類型字段

        // 生成數據庫相關類
        //第二個參數指定生成文件的本次存儲路徑,AndroidStudio工程指定到當前工程的java路徑
        new DaoGenerator().generateAll(schema,
                "D:\\Android\\code-as\\Aandroid56\\DataBase\\greendao\\src\\main\\java");
    }

}

 2.在Application中經過DaoMaster.DevOpenHelper初始化數據庫框架

// 該初始化過程最好放在Application中進行,避免建立多個Session
private void setupDatabase() {
    // 經過 DaoMaster 的內部類 DevOpenHelper建立數據庫
    // 注意:默認的 DaoMaster.DevOpenHelper 會在數據庫升級時,刪除全部的表               
    /**
     * @param context : Context
     * @param name : 數據庫名字
     * @param factory : CursorFactroy
     */
    DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "student.db", null);
    // 獲取數據庫
    SQLiteDatabase database = helper.getWritableDatabase();
    // 獲取DaoMaster
    DaoMaster daoMaster = new DaoMaster(database);
    // 獲取Session
    DaoSession daoSession = daoMaster.newSession();
    // 獲取對應的表的DAO對象
    InfoDao dao = daoSession.getInfoDao();}

 3.獲取數據庫的DAO對象,便可進行增刪改查的操做ide

        // 增
       dao.insert(new Info(2l,"張三",18,"119"));
        // 刪
        dao.deleteByKey(1L);
        // 改
        dao.update(new Info(3L, "趙琦", 78, "18812348888"));

        // 查
        QueryBuilder<Info> builder = dao.queryBuilder();
        List<Info> build = builder.list();
        for(Info info:build){
        Log.e("MainActivity",info.toString());
        }
相關文章
相關標籤/搜索