网友通过本文主要向大家介绍了Android 操作数据库的框架——greenDAO的学习等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Android 操作数据库的框架——greenDAO的学习
greenDAO的使用
简介
官网给出如下介绍:
greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。
在使用greenDAO的时候需要创建两个project,其中一个是java工程,它用来生成特定于您的项目的代码域(即生成了bean对象和操作数据库的dao)
核心的classes
DaoMaster:
DaoMaster保存了数据库对象和管理DAO类的classes,其提供了一些静态方法创建和删除表,内部类OpenHelper和DevOpenHelper 实现了SQLiteOpenHelper并创建数据库的框架。
DaoSession:
管理所有可用的DAO对象,可以通过getter方法获得。DaoSession还提供了一些通用的持久性方法比如插入、加载、更新,刷新和删除实体。
DAOs:
数据访问对象,每一个实体类都有对应的greenDAO对象。
Entities:
实体类对象
核心greenDAO类初始化数据库
helper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
noteDao = daoSession.getNoteDao();
主要优点
greenDAO 性能远远高于同类的 ORMLite,具体测试结果可见官网 greenDAO 支持 protocol buffer(protobuf) 协议数据的直接存储,如果你通过 protobuf 协议与服务器交互,将不需要任何的映射。 与 ORMLite 等使用注解方式的 ORM 框架不同,greenDAO 使用「Code generation」的方式,这也是其性能能大幅提升的原因。使用方法
1.新建Android project并在main目录下新建文件夹java-gen(存放自动生成bean和dao)
2.在build.gradle中配置
//buildTypes{}中配置
sourceSets {
main {
java.srcDirs = ['src/main/java', 'src/main/java-gen']
}
}
//dependencies{}中配置
compile 'de.greenrobot:greendao:2.1.0'
3.新建java project——greenDAO_java
在build.gradle中添加
compile 'de.greenrobot:greendao-generator:2.1.0'
创建模式对象,并添加实体(表)
public class Generator {
public static void main(String[] args) throws Exception {
int version=1;
String defaultPackage="test.greenDAO.bean";
//创建模式对象,指定版本号和自动生成的bean对象的包名
Schema schema=new Schema(version,defaultPackage);
//指定自动生成的dao对象的包名,不指定则都DAO类生成在"test.greenDAO.bean"包中
schema.setDefaultJavaPackageDao("test.greenDAO.dao");
//添加实体
addEntity(schema);
String outDir="D:/adt-bundle-windows-x64/workspace/studio/frame/study_demo/testgreendao/src/main/java-gen";
//调用DaoGenerator().generateAll方法自动生成代码到之前创建的java-gen目录下
new DaoGenerator().generateAll(schema,outDir);
}
private static void addEntity(Schema schema) {
//添加一个实体,则会自动生成实体Entity类
Entity entity = schema.addEntity("Entity");
//指定表名,如不指定,表名则为 Entity(即实体类名)
entity.setTableName("student");
//给实体类中添加属性(即给test表中添加字段)
entity.addIdProperty().autoincrement();//添加Id,自增长
entity.addStringProperty("name").notNull();//添加String类型的name,不能为空
entity.addIntProperty("age");//添加Int类型的age
entity.addDoubleProperty("score");//添加Double的score
}
}
4.运行java代码,自动在Android project的java-gen目录下生成bean类和DAO类
5.新建MyApplication继承Application,并在Manifest文件中配置
public class MyApplication extends Application{
public DaoSession daoSession;
public SQLiteDatabase db;
public DaoMaster.DevOpenHelper helper;
public DaoMaster daoMaster;
@Override
public void onCreate() {
super.onCreate();
setupDatabase();
}
private void setupDatabase() {
//创建数据库
// 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
// 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
helper = new DaoMaster.DevOpenHelper(this, "test", null);
//得到数据库连接对象
db = helper.getWritableDatabase();
//得到数据库管理者
daoMaster =new DaoMaster(db);
//得到daoSession,可以执行增删改查操作
daoSession = daoMaster.newSession();
}
public DaoSession getDaoSession() {
return daoSession;
}
public SQLiteDatabase getDb() {
return db;
}
}
6.编写MainActivity中的代码,实现用greenDAO进行数据库的操作
布局文件
初始化视图
tv_id = (TextView)