GreenDao数据库框架的基础学习
GreenDao很早就想看看了,最近由于业务需求的变化,我就开始学习下简单的增、删、改、查。
资料参考:
- 首先这是官网地址:https://github.com/greenrobot/greendao
- 参考博客为:https://www.cnblogs.com/wjtaigwh/p/6394288.html
- 慕课网上的视频教程(有点老了,个人觉得)
一、咱们先来学习下GreenDao的Api属性:
GreenDao是使用ORM(Object RelationShop Mapping)对象关系映射,就是通过GreenDao将数据库和Bean关联起来有以下优点:
- 存取速度快
- 支持数据库加密
- 轻量级
- 激活实体
- 支持缓存
- 代码自动生成
二、代码的接入配置
- app项目目录下build文件中添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14apply plugin: 'org.greenrobot.greendao'
Android{
//greendao配置
greendao{
//版本号,升级时可配置
schemaVersion 1
}
}
dependencies {
implementation 'org.greenrobot:greendao:3.2.2' // add library
implementation 'org.greenrobot:greendao-generator:3.2.2'
}
- app项目目录下build文件中添加
- 在更目录中build文件中需要添加
1
2
3dependencies {
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}预览效果:
Bean 对象注释的解释
1
2
3
4
5
6
7@Entity:告诉GreenDao该对象为实体,只有被@Entity注释的Bean类才能被dao类操作
@Id:对象的Id,使用Long类型作为EntityId,否则会报错。(autoincrement = true)表示主键会自增,如果false就会使用旧值
@Property:可以自定义字段名,注意外键不能使用该属性
@NotNull:属性不能为空
@Transient:使用该注释的属性不会被存入数据库的字段中
@Unique:该属性值必须在数据库中是唯一值
@Generated:编译后自动生成的构造函数、方法等的注释,提示构造函数、方法等不能被修改在Application中初始化自己的数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16/**
* 配置数据库
*/
private void setupDatabase() {
//创建数据库shop.db
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,"shop.db",null);
//获取可写数据库
SQLiteDatabase db = helper.getWritableDatabase();
//获取数据库对象
DaoMaster daoMaster = new DaoMaster(db);
//获取dao对象管理者
daoSession = daoMaster.newSession();
}
public static DaoSession getDaoInstant(){
return daoSession;
}在使用前我们海的封装一个数据库的操作类,提供简单的Shop对象的增删该查的简单方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33* 使用GreenDao 实现简单的增删改查,下面是基本方法
* 增加单个数据
* getShopDao().insert(shop);
* getShopDao().insertOrReplace(shop);
* 增加多个数据
* getShopDao().insertInTx(shopList);
* getShopDao().insertOrReplaceInTx(shopList);
* 查询全部
* List< Shop> list = getShopDao().loadAll();
* List< Shop> list = getShopDao().queryBuilder().list();
* 查询附加单个条件
* .where()
* .whereOr()
* 查询附加多个条件
* .where(, , ,)
* .whereOr(, , ,)
* 查询附加排序
* .orderDesc()
* .orderAsc()
* 查询限制当页个数
* .limit()
* 查询总个数
* .count()
* 修改单个数据
* getShopDao().update(shop);
* 修改多个数据
* getShopDao().updateInTx(shopList);
* 删除单个数据
* getTABUserDao().delete(user);
* 删除多个数据
* getUserDao().deleteInTx(userList);
* 删除数据ByKey
* getTABUserDao().deleteByKey();
我的代码和网上大佬的一样,其实就是自己平时封装的工具类!累。。。。。
那么那么久
最后附上自己的练习代码:Coding
在大佬的基础上学习就是快!!!
大佬的博客为:http://www.cnblogs.com/wjtaigwh/