使用ORM数据库:greenDao
1. 添加依賴:
// 在總的 build.gradle 中
buildscript {
????repositories {
????????jcenter()
????????mavenCentral() // 加入倉庫
????}
????dependencies {
????????classpath 'com.android.tools.build:gradle:2.3.1'
????????classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' // 添加插件
????}
}
// 在應(yīng)用程序的 build.grdle 中
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' //添加應(yīng)用插件
dependencies {
????compile 'org.greenrobot:greendao:3.0.1'
????compile'org.greenrobot:greendao-generator:3.0.0'
}
//應(yīng)用程序的 build.grdle 的 android 中
android{
????...
????greendao {
????????schemaVersion 1//數(shù)據(jù)庫版本號(hào)
????????daoPackage 'com.xxx.xxx.greendao'//設(shè)置 DaoMaster、DaoSession、Dao 包名
????????targetGenDir 'src/main/java'//設(shè)置 DaoMaster、DaoSession、Dao 目錄
????????//targetGenDirTest:設(shè)置生成單元測(cè)試目錄
????????//generateTests:設(shè)置自動(dòng)生成單元測(cè)試用例
????}
}
2. 使用樣例:
實(shí)體類 User
@Entity//標(biāo)示是一個(gè)greenDao需要生成的類
public class User {
????@Id(autoincrement = true)//標(biāo)示是自增長的id,必須是Long型
????private Long id;
????private String name;
????private int age;
????@Transient//表示不會(huì)存儲(chǔ)此字段
? ? private boolean isCheck;
}
3.? 相關(guān)注解說明 :
3.1. 實(shí)體@Entity 注解
schema:告知 GreenDao 當(dāng)前實(shí)體屬于哪個(gè) schema
active:標(biāo)記一個(gè)實(shí)體處于活躍狀態(tài),活動(dòng)實(shí)體有更新、刪除和刷新方法
nameInDb:在數(shù)據(jù)庫中使用的別名,默認(rèn)使用的是實(shí)體的類名
indexes:定義索引,可以跨越多個(gè)列
createInDb:標(biāo)記創(chuàng)建數(shù)據(jù)庫表
3.2. 基礎(chǔ)屬性注解
@Id:主鍵 Long 型,可以通過@Id(autoincrement = true)設(shè)置自增長
@Property:設(shè)置一個(gè)非默認(rèn)關(guān)系映射所對(duì)應(yīng)的列名,默認(rèn)是使用字段名,例如:@Property(nameInDb = “name”)
@NotNull:設(shè)置數(shù)據(jù)庫表當(dāng)前列不能為空
@Transient:添加此標(biāo)記后不會(huì)生成數(shù)據(jù)庫表的列
3.3. 索引注解
@Index:使用@Index 作為一個(gè)屬性來創(chuàng)建一個(gè)索引,通過 name 設(shè)置索引別名,也可以通過 unique 給索引添加約束
@Unique:向數(shù)據(jù)庫添加了一個(gè)唯一的約束
3.4. 關(guān)系注解:
@ToOne:定義與另一個(gè)實(shí)體(一個(gè)實(shí)體對(duì)象)的關(guān)系
@ToMany:定義與多個(gè)實(shí)體對(duì)象的關(guān)系
4. 當(dāng)編寫好實(shí)體類并添加了注解之后,點(diǎn)擊Make Project或者M(jìn)ake Module * ,就會(huì)在自己設(shè)定的目錄下看到生成的類文件,并且
會(huì)自動(dòng)生成各個(gè)屬性的 get,set 方法
5. 初始化(一般在 Application 中)
DaoMaster.DevOpenHelper openHelper=new DaoMaster.DevOpenHelper(上下文,數(shù)據(jù)庫名字);//也有三個(gè)參數(shù)的構(gòu)造,第三個(gè)參
數(shù)是游標(biāo)工廠
Database db=openHelper.getWritableDb();
DaoMaster daoMaster=new DaoMaster(db);
ormDao=daoMaster.newSession();//這個(gè) ormDao 就是要用于操作的
6. 增刪改查的操作(要 try 一下,如果有異常表示操作失敗)
6.1. 增:ormDao.get 實(shí)體類名 Dao().insert(對(duì)象);//注意,Long 型 id 如果傳入 null,則會(huì)自增長
6.2. 刪: deleteBykey(主鍵) :根據(jù)主鍵刪除一條記錄。
delete(對(duì)象) :根據(jù)實(shí)體類刪除一條記錄,一般結(jié)合查詢方法,查詢出一條記錄之后刪除。
deleteAll(): 刪除所有記錄。
6.3. 改:update(對(duì)象);//應(yīng)該是根據(jù)主鍵改的
6.4. 查: loadAll():查詢所有記錄
load(Long key):根據(jù)主鍵查詢一條記錄
queryBuilder().list():返回:List 列表
queryBuilder().where(UserDao.Properties.Name.eq(“”)).list():返回:List 列表
queryRaw(String where,String selectionArg):返回:List 列表
6.5. 高級(jí)查詢:
.orderAsc(類.字段)//按照字段進(jìn)行正序排序,應(yīng)該有 desc,倒序
.or()//條件或者,可以加多個(gè)條件,中間用逗號(hào)隔開
.and()//條件并且,可以加多個(gè)條件,中間用逗號(hào)隔開
queryBuilder() .offset(0* 20).limit(20).list();//分頁查詢,現(xiàn)在是查詢第 1 頁,每頁 20 條數(shù)據(jù)
總結(jié)
以上是生活随笔為你收集整理的使用ORM数据库:greenDao的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用adb命令控制Android
- 下一篇: Android混淆模板与使用