GreenDao的初次使用--号称Android最快的关系型数据库
一、准备工作
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最快的关系型数据库的更多相关文章
- Android——使用SQLiteDatabase操作SQLite数据库
除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NUL ...
- android之存储篇——SQLite数据库
转载:android之存储篇_SQLite数据库_让你彻底学会SQLite的使用 SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在In ...
- Android——采用SQLiteDatabase操作SQLite数据库
除了能够使用文件或SharedPreferences存储数据.还能够选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NUL ...
- Android 数据存储之 SQLite数据库存储
----------------------------------------SQLite数据库---------------------------------------------- SQLi ...
- Android虚拟机中的sqlite数据库文件
Android虚拟机中的sqlite数据库文件 ①
- 我的Android 4 学习系列之数据库和Content Provider
目录 创建数据库和使用SQLite 使用Content Provider.Cusor和Content Value来存储.共享和使用应用程序数据 使用Cursor Loader异步查询Content P ...
- Android学习记录:SQLite数据库、res中raw的文件调用
SQLite数据库是一种轻量级的关系型数据库. 在android中保存数据或调用数据库可以利用SQLite. android中提供了几个类来管理SQLite数据库 SQLiteDatabass类用来对 ...
- Android版本更新时对SQLite数据库升级或者降级遇到的问题
SQLite是Android内置的一个很小的关系型数据库.SQLiteOpenHelper是一个用来辅助管理数据库创建和版本升级问题的抽象类.我们可以继承这个抽象类,实现它的一些方法来对数据库进行自定 ...
- android:Android中用文件初始化sqlite数据库(zz)
很多时候在应用安装初始化时,需要创建本地数据库,同时为数据库添加数据,之后再从数据库中读取数据. 这里有2个思路 1.先在本地创建一个能支持android使用的sqlite数据库文件,启动时, ...
随机推荐
- [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. ...
- 微信小程序开发库grace vs wepy
grace和wepy都是辅助小程序开发的开源库,本文对两者做个对比. 注:本文是作者本人的一些拙见,纯粹的技术讨论,不想引起技术信仰之争,欢迎积极.正向的讨论及建议. 如果你还不了解Grace, 请参 ...
- linux内核中断之看门狗
一:内核中断 linux内核中的看门狗中断跟之前的裸板的中断差不多,在编写驱动之前,需要线把内核自带的watch dog模块裁剪掉,要不然会出现错误:在Device Drivers /Watchdog ...
- Oracle-02:SQL语言的分类或者说SQL语言的组成
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 小结一版: 01.DDL(Data Definition Language)数据定义语言. 用来创建数据库中 ...
- 几种扫描二维码工具的User-Agent
微信: user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, ...
- 手动撸个Android雷达图(蜘蛛网图)RadarView
公司产品需要一个雷达图来展示各维度的比重,网上找了一波,学到不少,直接自己上手来撸一记 无图言虚空 简单分析一波,确定雷达图正几边形的--正五边形 int count=5,分为几个层数--4 层 in ...
- balance.go 源码阅读
) //10s +随机毫秒数 后 执行下面代码 for _ = range t { for _, v := range pBackendSvrs { i ...
- forwardport--源码笔记--注释
failed:", err.Error()) } }() } // log.Println("forwardPort ...
- 使用jvisualvm
jvisualvm是java开发,调试,监控,分析内存的一个可视化工具,可以在安装完JDK中找到,一般在bin目录下 之前调试tomca内存分配,现在总结下心得, windows下的tomcat修改c ...
- 用C++向一个txt文档中写数据
bool CMaked::WriteFileMake(CString filePath, const char *isChange) { ofstream file; //filePath为该txt文 ...