Android十八章:是時候在你項(xiàng)目用上greenDAO3

GreenDao

GreenDao3.1.0使用案例包含(增刪查改,升級數(shù)據(jù)庫),3.+版本比2.+更加便捷生成DaoMaster和DaoSession
本文項(xiàng)目地址

首先讓你的android studio配置Greendao數(shù)據(jù)庫

在build.gradle目錄下

dependencies {
    classpath 'com.android.tools.build:gradle:2.1.0'
    classpath 'org.greenrobot:greendao-gradle-plugin:3.1.0'

}

在app/build.gradle目錄下設(shè)置

apply plugin: 'org.greenrobot.greendao'
android {
   greendao{
        schemaVersion 1                    //數(shù)據(jù)庫 版本號
        targetGenDir 'src/main/java'    //生成DaoMaster類文件夾
        daoPackage   'com.ppjun.greendaotest.db'  //生成DaoMaster類包名
    }

}
dependencies {
    compile 'org.greenrobot:greendao:3.1.0'
}

新建一個User類

@Entity
public class User {
    @Id
    private Long id;
    @Property(nameInDb = "username")
    private String userName;
    @Property(nameInDb = "password")
    private String passWord;
  
  
  //generate set和get方法 toString方法
  ...
}
  1. @Entity 代表數(shù)據(jù)庫里面的USER表
  2. @Id 主鍵
  3. @Property 表里面的內(nèi)容
  4. @Unique 唯一的
  5. @Transient 不會被數(shù)據(jù)庫持久化寫進(jìn)數(shù)據(jù)庫
  6. @NotNull 不為空

到此為止,sync gradle來執(zhí)行g(shù)reendao配置,下面開始講解怎么使用

GreenDao使用

如果遇到在生產(chǎn)包下找不到DaoMaster等文件,配置完上述代碼要先Run一下。才開始下面代碼。

public static final String DB_NAME = "ppjun.db";//數(shù)據(jù)庫名稱
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, DB_NAME, null);//實(shí)例化一個DevOpenhelper,相當(dāng)于sqlit的SQliteOpenHelper
DaoMaster daoMaster = new DaoMaster(helper.getWritableDb());//實(shí)例化DaoMaster
DaoSession daoSession = daoMaster.newSession();//實(shí)例化DaoSession
UserDao userDao =daoSession.getUserDao(); //獲取UserDao實(shí)例來對表user進(jìn)行操作


//add,這里的null 代表自增長的id,你還可以為user表插入unique的userid
        User user1 = new User(null, "ag1", "123456");
        User user2 = new User(null, "ag2", "123456");
        User user3 = new User(null, "ag3", "123456");
        userDao.insert(user1);
        userDao.insert(user2);
        userDao.insert(user3);

 //update,這里更新id是3的user的名字,id從1開始的,在where來添加匹配條件
        User user4 = userDao.queryBuilder().where(UserDao.Properties.Id.eq(3)).build().unique();
        user4.setUserName("kk");
        userDao.update(user4);

//delete,這里刪除id是2的user
        List<User> userList2 = userDao.queryBuilder().where(UserDao.Properties.Id.eq(2)).build().list();
        for (User user5 : userList2)
            userDao.delete(user5);

  //query,重新user表全部user
        List<User> userList = userDao.queryBuilder().build().list();
        for (User user : userList)
            Log.i(TAG, user.toString());

上面完成數(shù)據(jù)庫基本操作。

下面來說GreenDao的升級數(shù)據(jù)庫,在user表插入age

1、修改build.gradle下面的schemaVersion 2

2、在user類,新增age對象

public class User {
    @Id
    private Long id;
    @Property(nameInDb = "age")
    private int age;
  //generate getter and setter & toString
}

3、你要新建一個類MyDBHelper繼承DaoMaster.OpenHelper,在類的構(gòu)造函數(shù)傳入Context,super(context,DB_NAME,null);還要重寫onUpgrade方法(注意這里的參數(shù)一是Database),然后創(chuàng)建表(傳入true,這里使用IF NOT EXISTS)不用擔(dān)心表不存在,還有執(zhí)行增加age列sql語句 db.exeSQL("ALTER TABLE USER ADD COLUMN age");

public class MyDBHelper extends DaoMaster.OpenHelper {
    public MyDBHelper(Context context) {
        super(context, DB_NAME,null);
    }

    @Override
    public void onUpgrade(Database db, int oldVersion, int newVersion) {
        super.onUpgrade(db, oldVersion, newVersion);
        NoteDao.createTable(db,true);
        db.execSQL("ALTER TABLE NOTE ADD COLUMN age");
    }


}

這時候的DaoMaster.DevOpenHelper改為自定義DBHelper,這樣子升級數(shù)據(jù)庫就不會丟失原來的數(shù)據(jù)了

DBHelper dbHelper = new DBHelper(context);
DaoMaster daoMaster = new DaoMaster(dbHelper.getWritableDb());

本文項(xiàng)目地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、關(guān)于greenDAO greenDAO應(yīng)該算是當(dāng)前最火的數(shù)據(jù)庫開源框架了,它是一個將對象映射到SQLite數(shù)據(jù)...
    當(dāng)幸福來敲門58閱讀 14,041評論 3 19
  • GreenDao 介紹:greenDAO是一個對象關(guān)系映射(ORM)的框架,能夠提供一個接口通過操作對象的方式去操...
    小董666閱讀 848評論 0 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,070評論 25 709
  • 1. 什么是greenDao 弄明白greenDao之前我們應(yīng)該先了解什么是ORM(Object Relation...
    看一季殘花落幕閱讀 2,660評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139

友情鏈接更多精彩內(nèi)容