Android集成GreenDao數(shù)據(jù)庫的操作步驟
數(shù)據(jù)持久化就是指將那些內(nèi)存中的瞬時數(shù)據(jù)保存到存儲設(shè)備中,保證即使在手機(jī)或電腦關(guān)機(jī)的情況下,這些數(shù)據(jù)仍然不會丟失。保存在內(nèi)存中的數(shù)據(jù)是處于瞬時狀態(tài)的,而保存在存儲設(shè)備中的數(shù)據(jù)是處于持久狀態(tài)的,持久化技術(shù)則提供了一種機(jī)制可以讓數(shù)據(jù)在瞬時狀態(tài)和持久狀態(tài)之間進(jìn)行轉(zhuǎn)換。
目前,Android系統(tǒng)中提供了3種方式的數(shù)據(jù)持久化技術(shù),即文件存儲、SharedPreferences存儲以及數(shù)據(jù)庫存儲。當(dāng)然,除了這3種方式之外,你還可以將數(shù)據(jù)保存在手機(jī)的SD卡中,不過使用文件、Shared Preferences或數(shù)據(jù)庫來保存數(shù)據(jù)會相對更簡單一些,而且比起將數(shù)據(jù)保存在SD卡中會更加地安全。Shared Preferences通常用在輕量級的數(shù)據(jù)存儲場景中,比如賬號/密碼的存儲,而數(shù)據(jù)庫則用在數(shù)據(jù)量比較大的場景中,比如聊天數(shù)據(jù)的存儲。
現(xiàn)在,使用數(shù)據(jù)庫存儲時候,一般都會使用一些第三方ORM框架,比如GreenDao。在Android開發(fā)中,集成Greendao通常需要如下幾步:
1.首先,在項目的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ù)庫,我們還需要對其進(jìn)行封裝。首先,我們創(chuàng)建一個實體對象:
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; //巡檢編號 @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; } }
然后再封裝一個統(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ù)庫之前,需要先在項目中初始化,比如。
private static DaoSession mDaoSession; public static DaoSession getmDaoSession() { return mDaoSession; } /** * 初始化數(shù)據(jù)庫 */ private void setDataBaseData() { //創(chuàng)建數(shù)據(jù)庫shop.db" DaoMaster.DevOpenHelper mDaoMaster = new DaoMaster.DevOpenHelper(this, "inspection.db", null); //獲取可寫的數(shù)據(jù)庫 SQLiteDatabase writableDatabase = mDaoMaster.getWritableDatabase(); //獲取數(shù)據(jù)庫對象 DaoMaster daoMaster = new DaoMaster(writableDatabase); //獲取Dao對象管理者 mDaoSession = daoMaster.newSession(); }
最后,只需要在業(yè)務(wù)中使用FaceMsgDao操作數(shù)據(jù)即可。
到此這篇關(guān)于Android集成GreenDao數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)Android GreenDao數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android組件化工具ARouter使用方法詳細(xì)分析
這篇文章主要介紹了Android組件化工具ARouter使用方法,組件化項目存在各個模塊之間耦合,通信麻煩的問題,為了解決這個問題,阿里巴巴的開發(fā)者就搞出了Arouter這個框架,以解決上述問題2022-10-10Android GridView實現(xiàn)橫向列表水平滾動
這篇文章主要為大家詳細(xì)介紹了Android GridView實現(xiàn)橫向列表水平滾動,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07詳解Android的OkHttp包編寫異步HTTP請求調(diào)用的方法
OkHttp支持Callback異步回調(diào)來實現(xiàn)線程的非阻塞,下面我們就來詳解Android的OkHttp包編寫異步HTTP請求調(diào)用的方法,需要的朋友可以參考下2016-07-07Android亮度調(diào)節(jié)的幾種實現(xiàn)方法
本篇文章詳細(xì)介紹了Android亮度調(diào)節(jié)的幾種實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-11-11android使用gesturedetector手勢識別示例分享
這篇文章主要介紹了android使用手勢識別的方法,介紹了單擊觸摸屏觸發(fā)的事件和雙擊事件的使用等方法,大家參考使用吧2014-01-01Android 中ListView點擊Item無響應(yīng)問題的解決辦法
如果listitem里面包括button或者checkbox等控件,默認(rèn)情況下listitem會失去焦點,導(dǎo)致無法響應(yīng)item的事件,怎么解決呢?下面小編給大家分享下listview點擊item無響應(yīng)的解決辦法2016-12-12Android基于高德地圖poi的仿微信獲取位置功能實例代碼
這篇文章主要介紹了Android基于高德地圖poi的仿微信獲取位置功能,當(dāng)用戶打開頁面自動定位,同時搜索周邊所有poi,點擊搜索按鈕輸入關(guān)鍵字,獲取關(guān)鍵字搜索結(jié)果,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友參考下吧2017-12-12Kotlin學(xué)習(xí)教程之協(xié)程Coroutine
這篇文章主要給大家介紹了關(guān)于Kotlin學(xué)習(xí)教程之協(xié)程Coroutine的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05