a505541778的gravatar头像
a505541778 2017-07-28 11:46:24
Android数据存储框架GreenDao 3.0使用详解

GreenDao 3.0 的使用

1.简介

简单的讲,GreenDao是一个将对象映射到 SQLite数据库中的轻量且快速的 ORM 解决方案。(GreenDaois a light & fast ORM solution that maps objects to SQLite databases.)

2.使用

2-1.导入相关的包

compile 'org.greenrobot:greendao:3.2.0'

2.2.配置(Module)

greendao {

     schemaVersion 1 //数据库版本

     daoPackage 'com.lee.codeplus.db'  //默认生成的包名

     targetGenDir 'src/main/java'  //根目录

}

 

2.3.在build.gradle(Project)中进行配置

buildscript {

     repositories {

     jcenter()

}

dependencies {

     classpath 'com.android.tools.build:gradle:2.3.3'

     classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'

}

}

3.使用

3.1  实体类的创建

@Entity

public class ArticleFile {

@Id

private Long id;

private String Category;

private String author;

private String createdAt;

private String objectId;

private String postType;

private String textContent;

private String updatedAt;

private String webUrl;

}

注:

(一) @Entity 定义实体

@nameInDb 在数据库中的名字,如不写则为实体中类名

@indexes 索引

@createInDb 是否创建表,默认为true,false时不创建

@schema 指定架构名称为实体

@active 无论是更新生成都刷新

(二) @Id

(三) @NotNull 不为null

(四) @Unique 唯一约束

(五) @ToMany 一对多

(六) @OrderBy 排序

(七) @ToOne 一对一

(八) @Transient 不存储在数据库中

(九) @generated 由greendao产生的构造函数或方法

3.2 Make Project自动生成Dao类等

 

Android数据存储框架GreenDao 3.0使用详解

图上3个选中的类就是生成的。

3.3 在Application中初始化

 

private DaoMaster mDaoMaster;

private DaoSession mDaoSession;

private DaoMaster.DevOpenHelper mHelper;

private SQLiteDatabase db;

public static BaseApplication instances;

 

@Override

public voidonCreate() {

     super.onCreate();

     instances=this;

     initDataBase();

}

public static BaseApplication  getInstances() {

     return  instances;

}

private void initDataBase() {

// 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。

     mHelper=newDaoMaster.DevOpenHelper(this,"Code-db", null);

     db=mHelper.getWritableDatabase();

// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。

     mDaoMaster=newDaoMaster(db);

     mDaoSession=mDaoMaster.newSession();

}

public DaoSession getDaoSession() {

     return mDaoSession;

}

public SQLiteDatabase getDb() {

     return db;

}

3.4 增加数据

ArticleFileDao dao =BaseApplication.getInstances().getDaoSession().getArticleFileDao();

dao.insert(article);

3.5.删除数据

ArticleFileDao dao = BaseApplication.getInstances().getDaoSession().getArticleFileDao();

ArticleFileDaodao.queryBuilder().where(ArticleFileDao.Properties.ObjectId.eq(article.getObjectId())).build().unique();

dao.deleteByKey(article.getId())

 

3.6.修改数据

ArticleFile article = dao.queryBuilder().where(ArticleFileDao.Properties.ObjectId.eq(article.getObjectId())).build().unique();

if(atricle !=null){

article.setAuthor("修改");

dao.updata(article)

}

3.7.查询数据

List <ArticleFile>articles= dao.loadAll();


打赏
最近浏览
419291821  LV1 2020年4月21日
angelsccg 2019年11月25日
暂无贡献等级
203778513  LV9 2017年9月13日
woshimanong  LV2 2017年8月14日
欠踹de背影  LV25 2017年8月1日
唐老鸭  LV26 2017年7月31日
一名小学生  LV10 2017年7月29日
jichuang  LV3 2017年7月28日
Watson  LV13 2017年7月28日
韵味朝阳  LV5 2017年7月28日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友