greenDAO優點及使用詳解


一、關於greenDAO

greenDAO是一個開源的Android ORM,它讓SQLite數據庫的開發再次變得有趣。它使開發人員免於處理低級數據庫要求,同時節省了開發時間。SQLite是一個很棒的嵌入式關系數據庫。盡管如此,編寫SQL和解析查詢結果仍然是非常繁瑣且耗時的任務。通過將Java對象映射到數據庫表(稱為ORM,“對象/關系映射”),greenDAO使您擺脫了這些麻煩。這樣,您可以使用簡單的面向對象的API來存儲,更新,刪除和查詢Java對象。

                       

二、greenDAO優點

最佳性能 (可能是 Android 中最快的 ORM) ,基准測試也是開源的;
易於使用的功能強大的 api,涵蓋關系和連接;
最小的內存消耗;
小型庫大小(< 100KB) ,以保持較低的構建時間,並避免65k 方法限制;
數據庫加密:greenDAO 支持 SQLCipher 來保證用戶數據的安全;
強大而活躍的社區交流支持,相關資料比較完善;
許多頂級的Android應用程序都依賴greenDAO,其中一些應用程序的安裝量超過1000萬,更證明了其可靠性。

三、 引入greenDAO

首先在項目目錄下的build.gradle中配置

repositories {
// GreenDao倉庫
mavenCentral()
}
dependencies {
// GreenDao插件
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}

然后在app目錄下的build.gradle中配置

//GreenDao插件
apply plugin: 'org.greenrobot.greendao'
dependencies {
implementation 'org.greenrobot:greendao:3.2.2'
}
android {
greendao {

schemaVersion 1 //數據庫版本號 每次升級數據庫都需要改變版本,只能增加

daoPackage 'com...green' //設置DaoMaster、 DaoSession、Dao包名

targetGenDir 'src/main/java' //設置DaoMaster、DaoSession、Dao目錄
}
}

四、創建數據庫及增刪改查操作

先創建一個實體類

@Entity
public class UserIm {
@Id
private Long id;
private String userId;
private String name;
private String url;
}

其中Long  id對應數據表中的主鍵,是一條數據的唯一標識。

創建完之后,點擊Make Project圖標

 

會自動生成get、set方法,同時在上述填寫的目錄中生成Dao文件

 

在Application中初始化

private DaoMaster daoMaster;
private static DaoSession daoSession;
private DaoMaster.DevOpenHelper devOpenHelper=null;

devOpenHelper=new DaoMaster.DevOpenHelper(getApplicationContext(),"數據庫名稱.db",null);
//實例化DaoMaster對象
daoMaster=new DaoMaster(devOpenHelper.getWritableDb());
//實例化DaoSession對象
daoSession=daoMaster.newSession();

//通過此方法,進行增刪改查
public static DaoSession getDaoSession(){
return daoSession;
}

插入數據

UserImDao userDao = ServerObserver.getDaoSession().getUserImDao();
userDao.insert(new UserIm(null,userId, name, url));

刪除數據

//清空所有數據
DaoSession daoSession = ServerObserver.getDaoSession();
Database database = daoSession.getUserImDao().getDatabase();
DaoMaster.dropAllTables(database, true);
DaoMaster.createAllTables(database, true);
//刪除某一條數據
userDao.deleteByKey(id);

修改數據

List<UserIm> userIms; //所有的user
userIms = userDao.queryBuilder().where(UserImDao.Properties.UserId.eq(userId)).list();
if (userIms.size()>0){
//
userIms.get(0).setName(title);
userIms.get(0).setUrl(url);
userDao.update(userIms.get(0));
}

查看數據

List<UserIm> userIms; //所有的user
userIms = userDao.queryBuilder().where(UserImDao.Properties.UserId.eq(targetId)).list();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM