以下是 GreenDao 官網與 GitHub 位置
如何在專案中導入 GreenDao
跟著 GitHub 上的教學依序的在 Gradle 上添加依賴
// In your root build.gradle file:
buildscript {
repositories {
jcenter()
mavenCentral() // add repository
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
}
}
// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin
dependencies {
compile 'org.greenrobot:greendao:3.2.2' // add library
}
In your root build.gradle fileAndroid Studio 中 build.gradle(Project:your project name) 中添加依賴
In your app projects build.gradle file
Android Studio 中 build.gradle(Module:app) 中添加依賴
增加這幾個依賴後就可以開始使用 GreenDao
以下是使用 GreenDao 中可更動的參數設定
在 Module:app 的 gradle 中可以添加以下參數進行設置
- schemaVersion : 設置你的 sqlite 版本號
- daoPackage : 設置生成的 DaoMaster 和 DaoSession package 名稱
- targetGenDir : 設置生成相關 .java 檔路徑;預設為 build/generated/source/greendao
- generateTests : 使用 true 或 false 是否生成單元測試
- targetGenDirTests : 設置生成的單元測試 .java 檔路徑:預設為 src/androidTest/java
接下來就是建立資料庫結構
建立方法有兩種
先介紹使用註解的方式
以下是建立表的 Code
package com.jrtou.greendaodemo.sqlite;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Index;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Generated;
/**
* Created by jrtou on 10/7/17.
*/
@Entity//告訴 greendao 自動生成工具這是 schema
public class BookEntry {
@Id(autoincrement = true)//設置 sqlite id 為自動增長
private Long id;
@Property(nameInDb = "BookName")//設置欄位 並賦予名稱
@Index(unique = true)//設置 索引
@NotNull//設置 不能為空
private String bookName;
@Property(nameInDb = "BookPrice")
@NotNull
private String bookPrice;
@Property(nameInDb = "Memo")
private String memo;
}
寫好表的結構之後點選 build > make project 進行生成相關程式碼
等待生成後發現你的 code 產生了一點變化
package com.jrtou.greendaodemo.sqlite;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Index;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Generated;
/**
* Created by jrtou on 10/7/17.
*/
@Entity//告訴 greendao 自動生成工具這是 schema
public class BookEntry {
@Id(autoincrement = true)//設置 sqlite id 為自動增長
private Long id;
@Property(nameInDb = "BookName")//設置欄位 並賦予名稱
@Index(unique = true)//設置 索引
@NotNull//設置 不能為空
private String bookName;
@Property(nameInDb = "BookPrice")
@NotNull
private String bookPrice;
@Property(nameInDb = "Memo")
private String memo;
@Generated(hash = 1605761728)
public BookEntry(Long id, @NotNull String bookName, @NotNull String bookPrice,
String memo) {
this.id = id;
this.bookName = bookName;
this.bookPrice = bookPrice;
this.memo = memo;
}
@Generated(hash = 137482324)
public BookEntry() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getBookName() {
return this.bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookPrice() {
return this.bookPrice;
}
public void setBookPrice(String bookPrice) {
this.bookPrice = bookPrice;
}
public String getMemo() {
return this.memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
}
}
然後資料夾結構切換成 project 尋找 app/build/generated/source/greendao可以看到工具幫你生成的 dao 相關操作 .java 檔案
代表成功建立操作資料庫相關程式碼
建立表結構之後寫一個 DBUtils 工具類
package com.jrtou.greendaodemo.utils;
import android.content.Context;
import com.jrtou.greendaodemo.sqlite.BookEntryDao;
import com.jrtou.greendaodemo.sqlite.DaoMaster;
import com.jrtou.greendaodemo.sqlite.DaoSession;
/**
* Created by jrtou on 10/7/17.
*/
public class DBUtils {
private static final String DB_NAME = "book.db";
private static DBUtils mDBUtils = null;
private DaoSession mDaoSession;
public static DBUtils Instance(Context context) {
if (mDBUtils == null)
mDBUtils = new DBUtils(context);
return mDBUtils;
}
private DBUtils(Context context) {
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, DB_NAME);
DaoMaster daoMaster = new DaoMaster(helper.getWritableDb());
mDaoSession = daoMaster.newSession();
}
public BookEntryDao getBookDao() {
return mDaoSession.getBookEntryDao();
}
}
比較推薦的是寫成單例模式(Singleton) 來進行資料庫操作之後要操作資料庫動作之前只要這樣使用
DBUtils dbUtils = DBUtils.Instance(this);
BookEntryDao mBookDao = dbUtils.getBookDao();
就可以進行資料庫的操作
0 意見:
張貼留言