GreenDao基本使用方式与怎么通过stetho查看数据库
程序员文章站
2022-06-27 18:37:07
一、意义将数据库层模型转换为 JAVA 对象,可直接使用二、GreenDAO 学习方法官方文档GreenDAO Example 和 GreenDAO Generation查看写法源码解析:首先,DevOpenHelper 打开数据库操作,创建一个表通过 db = hepler.getWritableDatabase() 得到一个数据库对象DaoMaster 数据库的主干 DaoMaster daoMaster = new DaoMaster(db)DaoMaster.newSessi...
一、意义
将数据库层模型转换为 JAVA 对象,可直接使用
二、GreenDAO 学习方法
- 官方文档
- GreenDAO Example 和 GreenDAO Generation查看写法
源码解析:
- 首先,DevOpenHelper 打开数据库操作,创建一个表
- 通过 db = hepler.getWritableDatabase() 得到一个数据库对象
- DaoMaster 数据库的主干 DaoMaster daoMaster = new DaoMaster(db)
- DaoMaster.newSession()数据库的会话层
三、使用步骤
1.前期准备
①项目中添加依赖
buildscript{ repositories{ google() jcenter() mavenCentral() } dependencies{ classpath 'com.android.tools.build:gradle:3.5.0' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' } } allprojects{ repositories{ google() jcenter() maven {url"https://jitpack.io"} } } taskclean(type:Delete){ delete rootProject.buildDir }
②在 module 添加依赖
- 头部
apply plugin:'com.android.application' apply plugin:'org.greenrobot.greendao'
- greenDAO 配置-生成位置在 build/generated/source/greendao
greendao{ schemaVersion 1//数据库版本号 //设置DaoMaster、DaoSession、Dao包名 generateTests false//设置为true以自动生成单元测试。 targetGenDirTests 'src/main/java'//应存储生成的单元测试的基本目录默认为src/androidTest/java。 }
- 导入包
//greendao implementation 'org.greenrobot:greendao:3.2.2'
2.创建实体类,绑定数据库
@Entity(nameInDb="QuestionTable") publicclass QuestionInfo implements Serializable{ private static final long serialVersionUID = 1L; privateint type; @Id privateStringquestion_id;
Ctrl + F9 - Make Project
生成 green 的数据 dao 文件(QuestionInfoDao)
3.创建数据库并写查询操作
思路:
- 主要分两步
- 数据库的初始化,使用DaoMaster.OpenHelper 创建数据库表(表名/拿到会话层DaoSession),并在Application中 Helper.initDataBase()初始化
- 数据操作控制器,通过 DaoSession 拿到生成的 QuesionInfoDao,通过 dao 利用greenDao内置api实现查询/删除/插入操作
①数据库初始化
- 创建数据库
QuestionDaoOpenHelperhelper = new QuestionDaoOpenHelper( BassApp.mContext,"question.db",null);
- 得到数据库对象
DaoMaster daoMaster = new DaoMaster(helper.getWritableDatabase());
- 建立数据库会话层
mDaoSession = daoMaster.**newSession();**
完整代码:
/**
* Created by zhoujunyuon 2020-08-07.
*/ public class QuestionDaoOpenHelper extends DaoMaster.OpenHelper{ public static DaoSession mDaoSession; public QuestionDaoOpenHelper(Contextcontext,Stringname,SQLiteDatabase.CursorFactoryfactory){ super(context,name,factory); } public static void initData(){ QuestionDaoOpenHelperhelper = new QuestionDaoOpenHelper( BassApp.mContext ,"question.db",null); DaoMasterdaoMaster = new DaoMaster( helper.getWritableDatabase()); mDaoSession = daoMaster.newSession(); } }
- BassApp 中 初始化
QuestionDaoOpenHelper.initData();
②数据操作控制器
- 通过 mDaoSession 拿到数据的 dao
dao = daoSession.getQuestionInfoDao();
- 利用 greenDao 计算的 dao 进行便捷的增删改查操作
dao.queryBuilder().list(); dao.insertOrReplaceInTx(list);
- 数据获取
mCurrentList = QuestionDbController.getInstance()**.quaryAll();
完整代码:
/**
*Createdbyzhoujunyuon2020-08-07.
*/ public class QuestionDbController{ private static QuestionDbController INSTANCE = null; private DaoSession daoSession; private QuestionInfoDao dao; public static QuestionDbController getInstance(){ synchronized( QuestionDbController.class ){ if(INSTANCE == null){ INSTANCE = new QuestionDbController(); } } return INSTANCE; } private QuestionDbController(){ daoSession = QuestionDaoOpenHelper.mDaoSession; dao=daoSession.getQuestionInfoDao(); } public List<QuestionInfo> quaryAll(){ returndao.queryBuilder().list(); } public void insertOrReplace( List<QuestionInfo>list){ this.dao.insertOrReplaceInTx(list); } }
通过stetho查看数据库
1.在app的gradle中导入
implementation 'com.facebook.stetho:stetho:1.3.1'
2:在你自定义的 Application的 onCreate() 加入:
Stetho.initializeWithDefaults(this);
3.保持手机连接状态访问
chrome://inspect/#devices
4.选 inspect
5.如下点击
参考文章:
GreenDao基本使用和版本升级
本文地址:https://blog.csdn.net/qq_36120652/article/details/107916605
下一篇: 刘备号称贤德之君,为什么不愿意回东吴?