Android_开源框架总结(一):GreenDao

本文详细介绍了GreenDao开源库的使用方法,包括配置步骤、单例类创建、数据库操作及源码分析。GreenDao作为高效的ORM框架,简化了SQLite数据库的操作,适用于Android应用开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. GreenDao开源库介绍
    greenDao开源库官网
    简单来讲,它是SQLite数据库与Java对象之间的桥梁,类似于Mybatis在SSM框架中的功能。简化了数据库的创建,编写,修改,升级等工作。是相对高效的ORM框架。
  2. GreenDao开源库配置
    2.1 app/build.gradle
apply plugin: 'org.greenrobot.greendao'
greendao {
    schemaVersion 1//数据库版本号
    daoPackage 'dao'//设置DaoMaster、DaoSession、Dao包名
    targetGenDir 'src/main/java/'//设置DaoMaster、DaoSession、Dao目录
}
dependencies {
    compile 'org.greenrobot:greendao:3.2.0'
}

2.2 project/build.gradle

```
dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
    classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
}

2.3 在dao目录下可以创建JavaBean对象,然后rebuild project就会在targetGenDir 目录下创建相应的操作数据库的文件,分别为DaoMaster,DaoSession,JavaBeanDao文件。

  • GreenDao开源库使用
    1.创建GreenDaoManager单例类
package com.example.administrator.greendaotest;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import org.greenrobot.greendao.query.QueryBuilder;

import java.util.List;

import dao.DaoMaster;
import dao.DaoSession;
import dao.HistoryData;
import dao.HistoryDataDao;

public class GreenDaoManager {
    private static volatile GreenDaoManager instance;
    private Context context;
    private DaoMaster.DevOpenHelper devOpenHelper;
    private final static String dbName = "history_db";

    private GreenDaoManager(Context context) {
        this.context = context;
        devOpenHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
    }

    public static GreenDaoManager getInstance(Context context) {
        if (instance == null) {
            synchronized (GreenDaoManager.class) {
                if (instance == null) {
                    return new GreenDaoManager(context);
                }
            }
        }
        return instance;
    }

    private SQLiteDatabase getReadableDatabase() {
        if (devOpenHelper == null) {
            devOpenHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
        }
        SQLiteDatabase database = devOpenHelper.getReadableDatabase();
        return database;
    }

    private SQLiteDatabase getWriteableDatabase() {
        if (devOpenHelper == null) {
            devOpenHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
        }
        SQLiteDatabase database = devOpenHelper.getWritableDatabase();
        return database;
    }

    private HistoryDataDao getHistoryDataDao(SQLiteDatabase database) {
        DaoMaster daoMaster = new DaoMaster(database);
        DaoSession daoSession = daoMaster.newSession();
        return daoSession.getHistoryDataDao();
    }

    public void insertHistoryData(HistoryData historyData) {
        HistoryDataDao historyDataDao = getHistoryDataDao(getWriteableDatabase());
        try {
            historyDataDao.insert(historyData);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public List<HistoryData> getHistoryData(){
        HistoryDataDao dataDao = getHistoryDataDao(getReadableDatabase());
        QueryBuilder queryBuilder = dataDao.queryBuilder();
        return queryBuilder.list();

    }
    
}
  1. 在UI控件中创建manager对象实例,作为操作数据库的唯一入口
  • GreenDao开源库源码分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值