一、准备工作

1、项目build.gradle文件下的dependencies中引入插件:

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

2、在module的build.gradle文件下顶部依赖插件:

apply plugin: 'org.greenrobot.greendao'

3、在module的build.gradle文件下的dependencies中引入依赖:

compile 'org.greenrobot:greendao:3.2.0'

二、GreenDao的注解

1、实体@Entity注解:

schema:告知GreenDao当前实体属于哪个schema

active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法

nameInDb:在数据中使用的别名,默认使用的是实体的类名

indexes:定义索引,可以跨越多个列

createInDb:标记创建数据库表

2、基础属性注解

@Id :主键 Long型,可以通过@Id(autoincrement = true)设置自增长

@Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名 举例:@Property (nameInDb="name")

@NotNul:设置数据库表当前列不能为空

@Transient :添加次标记之后不会生成数据库表的列

3、索引注解

@Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束

@Unique:向数据库列添加了一个唯一的约束

4、关系注解

@ToOne:定义与另一个实体(一个实体对象)的关系

@ToMany:定义与多个实体对象的关系

三、简单使用----使用管理类DBManager,操作名称为test_db的数据库,完成数据库中用户实体类User的增删改查等操作

1、创建实体用户类User,使用GreenDao进行注解,ReBuild项目。

/**
* <p>Description:
*/
@Entity
public class User { @Id(autoincrement = true)
private Long id ;
private String name ;
private int age ; public User(String name,int age){
this.name = name ;
this.age = age ;
} @Generated(hash = 1309193360)
public User(Long id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Generated(hash = 586692638)
public User() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
}

2、创建管理类DBManager,完成对User的增删改查方法

public class DBManager {

    private static DBManager instance ;
private final static String dbName = "test_db"; private Context mContext ; private DBManager(Context context){
this.mContext = context ;
openHelper = new DaoMaster.DevOpenHelper(context,dbName);
} private DaoMaster.DevOpenHelper openHelper = null ; public static DBManager getInstance(Context context){
if(instance == null){
synchronized (DBManager.class){
if(instance == null){
instance = new DBManager(context);
}
}
}
return instance ;
} private SQLiteDatabase getWriteableDatabase(){
if(openHelper == null){
openHelper = new DaoMaster.DevOpenHelper(mContext,dbName);
}
return openHelper.getWritableDatabase();
}
private SQLiteDatabase getRedadableDatabase(){
if(openHelper == null){
openHelper = new DaoMaster.DevOpenHelper(mContext,dbName);
}
return openHelper.getReadableDatabase() ;
} public void saveUser(User user){
DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
DaoSession daoSession = daoMaster.newSession();
UserDao userDao = daoSession.getUserDao();
//存入user对象
userDao.save(user); } public void saveUsers(List<User> users){
DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
DaoSession daoSession = daoMaster.newSession();
UserDao userDao = daoSession.getUserDao();
userDao.saveInTx(users);
} public void delteUser(User user){
DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
DaoSession daoSession = daoMaster.newSession();
UserDao userDao = daoSession.getUserDao();
userDao.delete(user);
} public void updateUser(User user){
DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
DaoSession daoSession = daoMaster.newSession();
UserDao userDao = daoSession.getUserDao();
userDao.update(user);
} public List<User> queryUser(){
DaoMaster daoMaster = new DaoMaster(getRedadableDatabase());
DaoSession daoSession = daoMaster.newSession();
UserDao userDao = daoSession.getUserDao();
QueryBuilder<User> qb = userDao.queryBuilder();
List<User> list = qb.list();
return list ;
} public List<User> queryUser(int age){
DaoMaster daoMaster = new DaoMaster(getRedadableDatabase());
DaoSession daoSession = daoMaster.newSession();
UserDao userDao = daoSession.getUserDao();
QueryBuilder<User> qb = userDao.queryBuilder();
//添加查询条件
qb.where(UserDao.Properties.Age.eq(age));
List<User> list = qb.list();
return list ;
} }

GreenDao的初次使用--号称Android最快的关系型数据库的更多相关文章

  1. Android——使用SQLiteDatabase操作SQLite数据库

    除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NUL ...

  2. android之存储篇——SQLite数据库

    转载:android之存储篇_SQLite数据库_让你彻底学会SQLite的使用 SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在In ...

  3. Android——采用SQLiteDatabase操作SQLite数据库

    除了能够使用文件或SharedPreferences存储数据.还能够选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NUL ...

  4. Android 数据存储之 SQLite数据库存储

    ----------------------------------------SQLite数据库---------------------------------------------- SQLi ...

  5. Android虚拟机中的sqlite数据库文件

    Android虚拟机中的sqlite数据库文件 ①

  6. 我的Android 4 学习系列之数据库和Content Provider

    目录 创建数据库和使用SQLite 使用Content Provider.Cusor和Content Value来存储.共享和使用应用程序数据 使用Cursor Loader异步查询Content P ...

  7. Android学习记录:SQLite数据库、res中raw的文件调用

    SQLite数据库是一种轻量级的关系型数据库. 在android中保存数据或调用数据库可以利用SQLite. android中提供了几个类来管理SQLite数据库 SQLiteDatabass类用来对 ...

  8. Android版本更新时对SQLite数据库升级或者降级遇到的问题

    SQLite是Android内置的一个很小的关系型数据库.SQLiteOpenHelper是一个用来辅助管理数据库创建和版本升级问题的抽象类.我们可以继承这个抽象类,实现它的一些方法来对数据库进行自定 ...

  9. android:Android中用文件初始化sqlite数据库(zz)

        很多时候在应用安装初始化时,需要创建本地数据库,同时为数据库添加数据,之后再从数据库中读取数据. 这里有2个思路 1.先在本地创建一个能支持android使用的sqlite数据库文件,启动时, ...

随机推荐

  1. [Arxiv1706] Few-Example Object Detection with Model Communication 论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #042eee } p. ...

  2. 微信小程序开发库grace vs wepy

    grace和wepy都是辅助小程序开发的开源库,本文对两者做个对比. 注:本文是作者本人的一些拙见,纯粹的技术讨论,不想引起技术信仰之争,欢迎积极.正向的讨论及建议. 如果你还不了解Grace, 请参 ...

  3. linux内核中断之看门狗

    一:内核中断 linux内核中的看门狗中断跟之前的裸板的中断差不多,在编写驱动之前,需要线把内核自带的watch dog模块裁剪掉,要不然会出现错误:在Device Drivers /Watchdog ...

  4. Oracle-02:SQL语言的分类或者说SQL语言的组成

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 小结一版:  01.DDL(Data Definition Language)数据定义语言. 用来创建数据库中 ...

  5. 几种扫描二维码工具的User-Agent

    微信: user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, ...

  6. 手动撸个Android雷达图(蜘蛛网图)RadarView

    公司产品需要一个雷达图来展示各维度的比重,网上找了一波,学到不少,直接自己上手来撸一记 无图言虚空 简单分析一波,确定雷达图正几边形的--正五边形 int count=5,分为几个层数--4 层 in ...

  7. balance.go 源码阅读

    ) //10s +随机毫秒数 后 执行下面代码     for _ = range t {         for _, v := range pBackendSvrs {             i ...

  8. forwardport--源码笔记--注释

    failed:", err.Error())             }         }()     }     //     log.Println("forwardPort ...

  9. 使用jvisualvm

    jvisualvm是java开发,调试,监控,分析内存的一个可视化工具,可以在安装完JDK中找到,一般在bin目录下 之前调试tomca内存分配,现在总结下心得, windows下的tomcat修改c ...

  10. 用C++向一个txt文档中写数据

    bool CMaked::WriteFileMake(CString filePath, const char *isChange) { ofstream file; //filePath为该txt文 ...