1. 程式人生 > >android greenDao的使用

android greenDao的使用

今天居然看到有人給我點贊,其實還是蠻開心的。以後寫部落格儘量寫的詳細點。再接再厲
android資料庫的操作,除了SQLiteOpenHelper工具以外,還提供了GreenDao來實現,底層也是使用SQLiteOpenHelper來實現的
1.github地址 https://github.com/greenrobot/greenDAO
2.依賴參照github
 

buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
    }
}
 
// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin
 
dependencies {
    implementation 'org.greenrobot:greendao:3.2.2' // add library
}

3.構建資料庫實體

@Entity
public class PersonRes {
    @Id(autoincrement = true)//主鍵自增長
    private Long id;
    @NotNull//不能為空
    private String name;
    @NotNull
    private int age;
}

4.在gradle檔案中配置生成資料庫工具檔案的路徑
schemaVersion 1
daoPackage 'com.dejun.commonsdk.gen'//此處要寫成你的專案包名.gen(新建目錄名稱)
targetGenDir 'src/main/java'

5.點選Build裡的Make Project會自動在com.dejun.commonsdk下生成gen目錄,在gen目錄下有DaoMaster和DaoSession兩個檔案

6.使用

public class GreenDaoUtil {
    private DaoManager daoManager;

    public GreenDaoUtil(Context context) {
        daoManager = DaoManager.getInstance();
        daoManager.init(context);
    }
    /**
     * 插入資料,如果表未建立,先建立表
     */
    public boolean insert(PersonRes personRes){
        boolean flag=false;
        flag=daoManager.getDaoSession().getPersonResDao().insert(personRes)==-1?false:true;
        Logger.d("insert:"+personRes);
        return flag;
    }
    /**
     * 插入多條資料
     */
    public void insertList(final List<PersonRes> personResList){
        daoManager.getDaoSession().runInTx(new Runnable() {
            @Override
            public void run() {
                for (PersonRes personRes:personResList ){
                    daoManager.getDaoSession().insertOrReplace(personRes);
                }
            }
        });
    }
    /**
     * 修改一條資料
     */
    public boolean update(PersonRes personRes){
        boolean flag=false;
        try {
            daoManager.getDaoSession().update(personRes);
            flag=true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }
    /**
     * 刪除單條資料
     */
    public boolean delete(PersonRes personRes){
        boolean flag=false;
        try {
            daoManager.getDaoSession().delete(personRes);
            flag=true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }
    /**
     * 刪除所有資料
     */
    public boolean deleteAll(){
        boolean flag=false;
        try {
            daoManager.getDaoSession().deleteAll(PersonRes.class);
            flag=true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }
    /**
     * 查詢所有記錄
     */
    public List<PersonRes> queryAll(){
        return daoManager.getDaoSession().loadAll(PersonRes.class);
    }
}