數據庫之greenDAO 的使用

數據庫之greenDAO 的使用

  • 官方主頁: https://github.com/greenrobot/greenDAO
  • 配置: AndroidStudio需要添加以下依賴
    • compile ‘de.greenrobot:greendao:2.1.0’
    • compile ‘de.greenrobot:greendao-generator:2.1.0’
  • 用途: 操作數據庫
  • 優點:

    • 這裏寫圖片描述

    • 性能最大化,內存開銷最小化

    • 易於使用的API
    • 爲Android進行高度優化
  • 使用步驟

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

public class CustomDAOGenerater {
    public static void main(String[] args) throws Exception {
        // 第一個參數爲數據庫版本
        //第二個參數爲數據庫的包名
        Schema schema = new Schema(1, "com.alpha.db");
        // 創建表,參數爲表名
        Entity entity = schema.addEntity("Info");
        // 爲表添加字段
        entity.addIdProperty();// 該字段爲id
        entity.addStringProperty("name");// String類型字段
        entity.addIntProperty("age");//Int類型字段
        entity.addStringProperty("tel");// String類型字段

        // 生成數據庫相關類
        //第二個參數指定生成文件的本次存儲路徑,AndroidStudio工程指定到當前工程的java路徑
        new DaoGenerator().generateAll(schema, "C:\\Users\\Alpha\\AndroidStudioProjects\\GreenDaoDemo\\app\\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對象,即可進行增刪改查的操作

// 增
dao.insert(new Info(null, "zhangsan", 12, "13112345678"));
// 刪
dao.deleteByKey(1L);
// 改
Info info = new Info(3L, "趙琦", 78, "18812348888");
dao.update(info);
// 查
QueryBuilder<Info> builder = dao.queryBuilder();
builder.where(InfoDao.Properties.Name.eq("lisi"));
Query<Info> build = builder.build();
List<Info> list = build.list();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章