GreenDao的使用小例子和增删改查的方法

1、创建「GREENDAO GENERATOR」模块 (纯 JAVA 工程)

1.1、添加如下依赖:

compile 'de.greenrobot:greendao:2.1.0'

1.2、在java同级目录下创建java_gen文件夹

GreenDao的使用小例子和增删改查的方法_第1张图片

GreenDao的使用小例子和增删改查的方法_第2张图片

1.3、创建DaoGenerator工具类如下:

public class UtDaoGenerator {
    public static void main(String[] args) throws Exception {
        // 创建一个用于添加实体(Entity)的模式(Schema)对象。
        // 两个参数分别代表:数据库版本号与自动生成代码的包路径。
        Schema schema = new Schema(1, "com.viciy.greendao");
        // 得到Schema 对象后,就可以使用它添加实体(Entities)了。
        addChat(schema);
        // 最后使用 DAOGenerator 类的 generateAll() 方法自动生成代码,此处你需要根据自己的情况更改输出目录(既之前创建的 java-gen)。
        new DaoGenerator().generateAll(schema, "E:\\Android\\AS_WorkSpace\\UtChatGreenDao\\app\\src\\main\\java_gen");
    }


    /**
     * @param schema
     */
    private static void addChat(Schema schema) {
        // 一个实体(类)就关联到数据库中的一张表,此处表名为「InstallTask」(既类名)
        Entity installTask = schema.addEntity("InstallTask");
        // greenDAO 会自动根据实体类的属性值来创建表字段,并赋予默认值
        // 接下来便可以设置表中的字段:
        installTask.addIdProperty();
        /**
         * 本次添加一下两个自定义字段:
         * downloadId
         * apkUrl
         */
        installTask.addStringProperty("downloadId").notNull();
        installTask.addStringProperty("apkUrl");
    }
}

1.4、运行工具类,生成 InstallTaskDao.java、InstallTask.java、DaoMaster.java、DaoSession.java

GreenDao的使用小例子和增删改查的方法_第3张图片

生成的InstallTaskDao.java、InstallTask.java、DaoMaster.java、DaoSession.java 文件前面都有一个小红点 这是因为包名的问题,把这四个文件拷贝到Android项目中,将包名修改正确,并将每个文件的import 中报错部分删除,然后rebuild即可,修改后结果如下图:

GreenDao的使用小例子和增删改查的方法_第4张图片

PS:这里一开始不使用项目中的包名是因为,我们在开发中一般都是先写demo,再将demo移植到项目中去。若一开始创建Schema对象的包名与项目的包名一致,则不用修改,直接将上述四个文件拷入对应的包名下即可;

2、GreenDao增删改查的方法

2.1 使用GreenDao创建DbHeleper,如下:

package com.viciy.utchatgreendao;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.List;
import de.greenrobot.dao.query.Query;

/**
 * Created by Viciy on 2017/01/27.
 */

public class DbInstallTaskHelper {
    public final static String dbName = "chat_from_team";
    private Cursor cursor;
    //用于聊天对象和群名的保存
    private DaoMaster.DevOpenHelper helper;
    private SQLiteDatabase db;
    private DaoMaster               master;
    private DaoSession              daoSession;

    public DbInstallTaskHelper(Context context) {
        //初始化数据库
        setupDatabase(context);
        String orderBy = ChatFromTeamDao.Properties.Id.columnName + " DESC";
        //查询,得到cursor
        cursor = getDb().query(getDaoSession().getChatFromTeamDao().getTablename(),
                getDaoSession().getChatFromTeamDao().getAllColumns(), null, null, null, null, orderBy);
    }

    public void setupDatabase(Context context) {
        //创建数据库
        helper = new DaoMaster.DevOpenHelper(context, DbInstallTaskHelper.dbName, null);
        //得到数据库连接对象
        db = helper.getWritableDatabase();
        //得到数据库管理者
        master = new DaoMaster(db);
        //得到daoSession,可以执行增删改查操作
        daoSession = master.newSession();
    }


    public DaoSession getDaoSession() {
        return daoSession;
    }

    public SQLiteDatabase getDb() {
        return db;
    }

    /**
     * 添加
     */
    public void add(String apkUrl, String downloadId) {
        InstallTask chatFromTeam = new InstallTask(null, apkUrl, downloadId);
        //面向对象添加表数据
        getDaoSession().getChatFromTeamDao().insert(chatFromTeam);
        cursor.requery();//刷新
        close();
    }

    /**
     * 根据sessionid删除
     */
    public void delete(String apkUrl, String downloadId) {
        InstallTask chatFromTeam = new InstallTask(null, apkUrl, downloadId);
        getDaoSession().getChatFromTeamDao().delete(chatFromTeam);
        cursor.requery();
        close();
    }

    /**
     * 更新
     */
    public void update(String apkUrl, String downloadId) {
        InstallTask chatFromTeam = getDaoSession().getChatFromTeamDao().queryBuilder().where(ChatFromTeamDao.Properties.Sessionid.eq(apkUrl)).build().unique();
        chatFromTeam.setDownloadId(downloadId);
        getDaoSession().getChatFromTeamDao().update(chatFromTeam);
        cursor.requery();
        close();
    }

    /**
     * 查询
     *
     * @ param sessionid
     */
    public List query(String apkUrl) {

        // Query 类代表了一个可以被重复执行的查询
        Query query = getDaoSession().getChatFromTeamDao().queryBuilder()
                .where(ChatFromTeamDao.Properties.Sessionid.eq(apkUrl))
                .orderAsc(ChatFromTeamDao.Properties.Id)
                .build();
        // 查询结果以 List 返回
        List count = query.list();
        close();
        return count;

    }

    /**
     * 关闭cursor
     */
    public void close() {
        cursor.close();
    }

}

2.2、GreenDao增删改查的的使用

创建DbInstallTaskHelper对象,调用它的增删改查方法即可,如:

DbInstallTaskHelper helper = new DbInstallTaskHelper(context);
List<InstallTask> query = helper.query("1234");

你可能感兴趣的:(数据库)