[Android] Android 使用 Greendao 操作 db sqlite

Android 使用 Greendao 操作 db sqlite

GreenDAO是一个开源的安卓ORM框架,能够使SQLite数据库的开发再次变得有趣。它减轻开发人员处理低级数据库需求,同时节省开发时间。 SQLite是一个令人敬畏的内嵌的关系数据库,编写SQL和解析查询结果是相当乏味和耗时的任务。通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),GreenDAO可以将它们从这些映射中释放出来,这样,您可以使用简单的面向对象的API来存储,更新,删除和查询数据库。

如何使用:

一、添加依赖

项目 build.gradle

buildscript {

    dependencies {
        **
        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
    }
}

 

app\build.gradle

apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'

android {
    ***
}

greendao {
    schemaVersion 1
    targetGenDir 'src/main/java'
    daoPackage "${android.defaultConfig.applicationId}.greendao"
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'

    ***

    compile 'org.greenrobot:greendao:3.0.1'
}

 

二、编写Bean实体

UserInfo.java

@Entity
public class UserInfo {
    @Id(autoincrement = true)
    private long id;
    private String userName;
    private int age;
}

然后点击Build -> make project  (或Ctrl + F9)

生成对应的Dao文件

 

三、编写DBManager

DBManager.java

package com.jack.testmd.greendao;

import android.content.Context;

public class DBManager {
    private static final String DB_NAME = "sport-db";
    private UserInfoDao userInfoDao;

    private static DaoMaster.DevOpenHelper sHelper;
    private static DaoSession sDaoSession;

    public static DBManager get() {
        return SingletonHolder.instance;
    }

    private static class SingletonHolder {
        private static DBManager instance = new DBManager();
    }

    public void init(Context context) {
        if (sDaoSession == null) {
            DaoMaster.DevOpenHelper sHelper = new DaoMaster.DevOpenHelper(context, DB_NAME);
            DaoMaster sDaoMaster = new DaoMaster(sHelper.getWritableDatabase());

            sDaoSession = sDaoMaster.newSession();
        }
        userInfoDao = sDaoSession.getUserInfoDao();
    }

    private DBManager() {
    }

    public DaoSession getDaoSession(){
        return sDaoSession;
    }
    public UserInfoDao getUserInfoDao() {
        return userInfoDao;
    }

    public void closeConnection() {
        closeHelper();
        closeDaoSession();
    }

    public void closeHelper() {
        if (sHelper != null) {
            sHelper.close();
            sHelper = null;
        }
    }

    public void closeDaoSession() {
        if (sDaoSession != null) {
            sDaoSession.clear();
            sDaoSession = null;
        }
    }


}

 

四、业务逻辑中调用

个人写了两种调用方法:

方法一:直接在MainActivity中调用

Android 使用 Greendao 操作 db sqlite(1)-- 直接在MainActivity中调用

 

方法二:封装DaoUtils类,然后在MainActivity中调用DaoUtils

Android 使用 Greendao 操作 db sqlite(2)-- 封装DaoUtils类

 

本博客地址: wukong1688

本文原文地址:https://www.cnblogs.com/wukong1688/p/10705622.html

转载请著名出处!谢谢~~

 

posted @ 2019-04-14 16:17  wukong1688  阅读(556)  评论(0编辑  收藏  举报