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类等
图上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();