GreenDao
GreenDao github: https://github.com/greenrobot/greenDAO
AndroidDebugDatabase:
https://github.com/amitshekhariitbhu/Android-Debug-Database
GreenDAO
简介:
GreenDAO是一个开源的Android ORM,使SQLite数据
库的开发变得有趣。它减轻开发人员处理低级数据库需求,并节省开发时间。SQLite是一个令人敬畏的嵌入式关系数据库。不过,编写SQL和解析查询结果是相当乏味和耗时的任务。通过将Java对象映射到数据库表(称为
ORM
,“对象/关系映射”),GreenDAO可以将它们从这些映射中释放出来。这样,您可以使用简单的面向对象的API来存储、更新、删除和查询Java对象。
![](https://i-blog.csdnimg.cn/blog_migrate/331d36d81c94e496c6ba89a05b9591ca.png)
GreenDAO的功能:
- 最高性能(可能是Android最快的ORM); 我们的基准也是开源的
- 易于使用的功能强大的API
- 最小的内存消耗
- 小图书馆大小(<100KB),以保持您的建立时间较低,并避免65k方法限制
- 数据库加密:GreenDAO支持SQLCipher,以保护用户的数据安全
Android Studio如何开始使用GreenDAO:
1、您需要添加greenDAO Gradle插件并添加greenDAO库:
//在你的root build.gradle 文件中加入:
buildscript {
repositories {
jcenter()
mavenCentral() // add repository
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
}
}
//在你的app projects build.gradle 文件中加:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin
dependencies {
compile 'org.greenrobot:greendao:3.2.2' // add library
}
2、在Application中
初始化数据库
// 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
// 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
// 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
// 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
db = mHelper.getWritableDatabase();
// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
3、在app项目build.gradle添加数据库版本
//数据库db版本
greendao {
schemaVersion 1
}
此外,
greendao
配置元素支持多种配置选项:
- schemaVersion:当前版本的数据库模式。这被 * OpenHelpers类用于在模式版本之间迁移。如果您更改了实体/数据库模式,则必须增加该值。默认为1。
- daoPackage:生成的DAO,DaoMaster和DaoSession的包名称。 默认为源实体的包名称。
- targetGenDir:生成源应存储在的位置。 默认为构建目录( build / generated / source / greendao)中生成的源文件夹。
- generateTests: 设置为true以自动生成单元测试。
- targetGenDirTests: 应存储生成的单元测试的基本目录。默认为 src / androidTest / java。
4、
实体和注释
@Entity
public class User {
@Id(autoincrement = true)
private Long id;
@Property(nameInDb = "USERNAME")
private String name;
@NotNull
private int repos;
@Transient
private int tempUsageCount;
}
@Entity
注解标记了一个Java类作为GreenDAO一个presistable实体
@Id注释选择 long / long属性作为实体ID。在数据库方面,它是主要的关键。参数autoincrement 是使ID值不断增加的标志(不重复使用旧值)。
@Property允许您定义属性映射到的非默认列名称。如果缺少,greenDAO将以SQL-ish方式使用字段名称(大写字母,下划线而不是骆驼案例,例如 customName将成为 CUSTOM_NAME)。注意:您当前只能使用内联常量来指定列名。
@NotNull使该属性在数据库端成为“NOT NULL”列。通常使用@NotNull标记原始类型(long,int,short,byte)是有意义的,而具有包装类(Long,Integer,Short,Byte))的可空值。
@Transient标记要从持久性排除的属性。使用这些临时状态等。或者,您也可以使用来自Java 的transient关键字。
//
DaoSession daoSession = ((App) getApplication()).getDaoSession();
mUserDao = daoSession().getUserDao();
//插入
User mUser = new User(id, "anye3");
mUserDao.insert(mUser);
//删除
mUserDao.deleteByKey(id);
//更新
User mUser = new User(id, "anye080" + id);
mUserDao.update(mUser);
//查询所有
List
users = mUserDao.loadAll();
- 查看所有数据库。
- 查看应用程序中使用的共享首选项中的所有数据。
- 在给定的数据库上运行任何sql查询来更新和删除您的数据。
- 直接编辑数据库值。
- 直接编辑共享首选项。
- 删除数据库行和共享首选项。
- 搜索您的数据。
- 数据排序
- 下载数据库。
将其添加到您的应用程序的build.gradle中
debugCompile'com.amitshekhar.android : debug- db : 1.0.0 '
使用
debugCompile
它只会编译在你的调试版本,而不是在你的发行版apk。
就这样,只需启动应用程序,您将在logcat中看到如下所示的条目:
- D / DebugDB:在浏览器中打开http://XXX.XXX.X.XXX:8080
- 您也可以通过调用该方法从代码中获取调试地址的URL DebugDB.getAddressLog();
现在打开浏览器中提供的链接。
重要:
- 您的Android手机和笔记本电脑应连接到同一个网络(Wifi或LAN)。
- 如果你使用它通过usb,运行 adb forward tcp:8080 tcp:8080