Android集成GreenDao數(shù)據(jù)庫(kù)的操作步驟
數(shù)據(jù)持久化就是指將那些內(nèi)存中的瞬時(shí)數(shù)據(jù)保存到存儲(chǔ)設(shè)備中,保證即使在手機(jī)或電腦關(guān)機(jī)的情況下,這些數(shù)據(jù)仍然不會(huì)丟失。保存在內(nèi)存中的數(shù)據(jù)是處于瞬時(shí)狀態(tài)的,而保存在存儲(chǔ)設(shè)備中的數(shù)據(jù)是處于持久狀態(tài)的,持久化技術(shù)則提供了一種機(jī)制可以讓數(shù)據(jù)在瞬時(shí)狀態(tài)和持久狀態(tài)之間進(jìn)行轉(zhuǎn)換。
目前,Android系統(tǒng)中提供了3種方式的數(shù)據(jù)持久化技術(shù),即文件存儲(chǔ)、SharedPreferences存儲(chǔ)以及數(shù)據(jù)庫(kù)存儲(chǔ)。當(dāng)然,除了這3種方式之外,你還可以將數(shù)據(jù)保存在手機(jī)的SD卡中,不過使用文件、Shared Preferences或數(shù)據(jù)庫(kù)來保存數(shù)據(jù)會(huì)相對(duì)更簡(jiǎn)單一些,而且比起將數(shù)據(jù)保存在SD卡中會(huì)更加地安全。Shared Preferences通常用在輕量級(jí)的數(shù)據(jù)存儲(chǔ)場(chǎng)景中,比如賬號(hào)/密碼的存儲(chǔ),而數(shù)據(jù)庫(kù)則用在數(shù)據(jù)量比較大的場(chǎng)景中,比如聊天數(shù)據(jù)的存儲(chǔ)。
現(xiàn)在,使用數(shù)據(jù)庫(kù)存儲(chǔ)時(shí)候,一般都會(huì)使用一些第三方ORM框架,比如GreenDao。在Android開發(fā)中,集成Greendao通常需要如下幾步:
1.首先,在項(xiàng)目的build.gradle文件中添加依賴:
classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' // add plugin
2.然后,在app/build.gradle文件中添加如下依賴:
apply plugin: 'org.greenrobot.greendao' // apply plugin implementation 'org.greenrobot:greendao:3.3.0'
為了方便操作GreenDao數(shù)據(jù)庫(kù),我們還需要對(duì)其進(jìn)行封裝。首先,我們創(chuàng)建一個(gè)實(shí)體對(duì)象:
package com.yufulife.xj.model;
import com.yufulife.xj.bean.CameraTakeBean;
import com.yufulife.xj.bean.JoinTakeBean;
import com.yufulife.xj.bean.ListSubCachedBeanConverter;
import org.greenrobot.greendao.annotation.Convert;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Unique;
import java.util.HashMap;
import java.util.List;
@Entity
public class People {
//不能用int
@Id(autoincrement = true)
private Long id;
//巡檢編號(hào)
@Unique
private String inspection_id="";
private String content="";
@Convert(converter = ListSubCachedBeanConverter.class, columnType = String.class)
private List<JoinTakeBean> mImgTT;
@Generated(hash = 574353758)
public People(Long id, String inspection_id, String content, List<JoinTakeBean> mImgTT) {
this.id = id;
this.inspection_id = inspection_id;
this.content = content;
this.mImgTT = mImgTT;
}
@Generated(hash = 1406030881)
public People() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getInspection_id() {
return this.inspection_id;
}
public void setInspection_id(String inspection_id) {
this.inspection_id = inspection_id;
}
public String getContent() {
return this.content;
}
public void setContent(String content) {
this.content = content;
}
public List<JoinTakeBean> getMImgTT() {
return this.mImgTT;
}
public void setMImgTT(List<JoinTakeBean> mImgTT) {
this.mImgTT = mImgTT;
}
}
然后再封裝一個(gè)統(tǒng)一的管理類:
package com.yufulife.xj.model;
import android.util.Log;
import com.google.gson.Gson;
import com.yufulife.xj.App;
import org.greenrobot.greendao.query.QueryBuilder;
import java.util.ArrayList;
import java.util.List;
public class FaceMsgDao {
private static final String TAG = "ClockInfoDao";
/**
* 添加數(shù)據(jù),如果有重復(fù)則覆蓋
*
* @param people
*/
public static void insertData(People people) {
long l = App.getmDaoSession().getPeopleDao().insertOrReplace(people);
System.out.println("liu:::::: "+l);
}
public static long getId(People people) {
return App.getmDaoSession().getPeopleDao().getKey(people);
}
public static People getPeopleWhere(String Inspection_id){
List<People> list = App.getmDaoSession().getPeopleDao().queryBuilder().where(PeopleDao.Properties.Inspection_id.eq(Inspection_id)).list();
if (list!=null){
if (list.size()>=1){
return list.get(0);
}
}
return null;
}
public static void deletePeopleWhere(String Inspection_id){
App.getmDaoSession().getPeopleDao().queryBuilder().where(PeopleDao.Properties.Inspection_id.eq(Inspection_id)) .buildDelete().executeDeleteWithoutDetachingEntities();
}
/**
* 更新數(shù)據(jù)
*
* @param people
*/
public static void updateData(People people) {
App.getmDaoSession().getPeopleDao().update(people);
}
/**
* 查詢?nèi)繑?shù)據(jù)
*/
public static List<People> queryAll() {
return App.getmDaoSession().getPeopleDao().loadAll();
}
public static void systemOutPeopleAll(){
List<People> people = queryAll();
for (People people1:people){
System.out.println("liu::all "+new Gson().toJson(people1));
}
}
public static People getPeople(String war) {
List<People> clockInfos = queryAll();
if (clockInfos==null){
System.out.println("liu::: "+"沒有找到數(shù)據(jù)");
return null;
}
for (People info : clockInfos) {
if (info.getInspection_id() .equals(war) ) {
return info;
}
}
System.out.println("liu::: "+"沒有找到數(shù)據(jù)");
return null;
}
}
需要注意的是,在使用GreenDao數(shù)據(jù)庫(kù)之前,需要先在項(xiàng)目中初始化,比如。
private static DaoSession mDaoSession;
public static DaoSession getmDaoSession() {
return mDaoSession;
}
/**
* 初始化數(shù)據(jù)庫(kù)
*/
private void setDataBaseData() {
//創(chuàng)建數(shù)據(jù)庫(kù)shop.db"
DaoMaster.DevOpenHelper mDaoMaster = new DaoMaster.DevOpenHelper(this, "inspection.db", null);
//獲取可寫的數(shù)據(jù)庫(kù)
SQLiteDatabase writableDatabase = mDaoMaster.getWritableDatabase();
//獲取數(shù)據(jù)庫(kù)對(duì)象
DaoMaster daoMaster = new DaoMaster(writableDatabase);
//獲取Dao對(duì)象管理者
mDaoSession = daoMaster.newSession();
}
最后,只需要在業(yè)務(wù)中使用FaceMsgDao操作數(shù)據(jù)即可。
到此這篇關(guān)于Android集成GreenDao數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)Android GreenDao數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android日期和時(shí)間選擇器實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Android日期和時(shí)間選擇器實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
Android編程實(shí)現(xiàn)動(dòng)態(tài)更新ListView的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)動(dòng)態(tài)更新ListView的方法,結(jié)合實(shí)例形式詳細(xì)分析了ListView的布局及動(dòng)態(tài)更新實(shí)現(xiàn)方法,需要的朋友可以參考下2016-02-02
Android中Splash應(yīng)用啟動(dòng)白屏問題的解決方法
這篇文章主要為大家詳細(xì)介紹了Android中Splash應(yīng)用啟動(dòng)白屏問題的兩種解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
詳細(xì)介紹Android中回調(diào)函數(shù)機(jī)制
這篇文章主要介紹了Android中回調(diào)函數(shù)機(jī)制,有需要的朋友可以參考一下2014-01-01
Android WorkManager實(shí)現(xiàn)后臺(tái)定時(shí)任務(wù)流程詳解
WorkManager是Android Jetpack的一個(gè)強(qiáng)大的組件,用于處理后臺(tái)耗時(shí)任務(wù)。后臺(tái)任務(wù)可以是一次性的,也可以是重復(fù)的,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01
AndroidStudio3 支持 Java8 了請(qǐng)問你敢用嗎
Google 發(fā)布了 AS 3.0,以及一系列的 Support 包,有意思的新東西挺多,AS3里面有一個(gè)亮眼的特性就是支持J8。接下來通過本文給大家分享AndroidStudio3 支持 Java8 的相關(guān)內(nèi)容,感興趣的朋友一起看看吧2017-11-11

