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

来源:互联网 发布:seo营销方法 编辑:程序博客网 时间:2024/06/04 19:15

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

1.1、添加如下依赖:

compile 'de.greenrobot:greendao:2.1.0'

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

这里写图片描述

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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<InstallTask> query(String apkUrl) {        // Query 类代表了一个可以被重复执行的查询        Query<InstallTask> query = getDaoSession().getChatFromTeamDao().queryBuilder()                .where(ChatFromTeamDao.Properties.Sessionid.eq(apkUrl))                .orderAsc(ChatFromTeamDao.Properties.Id)                .build();        // 查询结果以 List 返回        List<InstallTask> 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");
2 0