<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
不知不覺發現都快一個月沒有寫點東西了,自己最近也是忙於工作與生活當中,這個月經歷了很多事情,有開心的也有悲傷的。還好一切都過來了,空下來時想著寫點什麼好呢,就想著把工作中自己比較喜歡使用的一款有關資料庫的開源框架greenDAO,分享下自己的使用過程。
greenDAO是一個針對Android的輕而快速的ORM,它將物件對映到SQLite資料庫。由於對Android進行了高度優化,greenDAO提供了出色的效能,並且消耗了最少的記憶體。
buildscript {
repositories {
jcenter()
mavenCentral()
}dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
}apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'android {
buildToolsVersion '25.0.2'
compileSdkVersion 25defaultConfig {
applicationId "org.greenrobot.greendao.example"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "3"testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
}greendao {
schemaVersion 1000
}dependencies {
compile 'org.greenrobot:greendao:3.2.2'// 這裡當我們使用加密的資料庫時就必須新增這條依賴
compile 'net.zetetic:android-database-sqlcipher:3.5.6'compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
}uploadArchives.enabled = false
設定成功後,我們需要建立一個實體類用來生成對應的表,@Entity表示這個實體類一會會在資料庫中生成對應的表,@Id表示該欄位是id(設定Long型別表示id會自動增長):
@Entity public class Province { @Id private Long id; private String provinceName; private String provinceCode; }
寫完這些之後將專案進行編譯:Build—Make Project,編譯成功之後系統會幫助我們生成相應的構造方法和get/set方法,並且還會在我們的包下生成DaoMaster和DaoSession。下面我們就可以對資料庫進行初始化了:
public class App extends Application { //這裡我們定義一個標誌,從而去切換資料庫的標準模式和加密模式 public static final boolean ENCRYPTED = true; private DaoSession daoSession; @Override public void onCreate() { super.onCreate(); DevOpenHelper helper = new DevOpenHelper(this, ENCRYPTED ? "province-db-encrypted" : "province-db"); Database db = ENCRYPTED ? helper.getEncryptedWritableDb("super-secret") : helper.getWritableDb(); daoSession = new DaoMaster(db).newSession(); } public DaoSession getDaoSession() { return daoSession; } }
如果我們想要操作實體類是需要要通過DAO來操作,比如我們想要操作Province
實體類,那我們必須先得到一個ProvinceDao
,通過ProvinceDao
我們可以對資料庫進行增刪改查等操作:
private ProvinceDao provinceDao; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mine_fix_school); DaoSession daoSession = ((App) getApplication()).getDaoSession(); provinceDao = daoSession.getProvinceDao(); }
List<Province> provinceList = provinceDao.queryBuilder().build().list(); if (provinceList.size() > 0) { //資料庫有資料時進行處理 }else { //資料庫無資料時,獲取網路資料進行資料儲存 api.areas(areaCode) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new MySubscriber<List<Province>>() { @Override public void onNext(List<Province> provinceList) { for (Province province : provinceList) { //插入資料 provinceDao.insert(province); } }); }
其實刪除資料和修改資料是一樣的思路,我們要先查詢到資料,然後再對資料進行操作:
for (Province province : provinceList) { //刪除資料 provinceDao.delete(province); }
這裡我只新增了一個查詢條件,就是是id於等於10,最後的unique表示只查詢一條資料出來即可:
Province province = provinceDao.queryBuilder().where(ProvinceDao.Properties.ProvinceCode.eq(10)).build().unique(); if (province == null) { //使用者不存在 }else { province.setProvinceName("修改浙江省"); //修改資料 provinceDao.update(province); }
其實上面刪除和修改都已經涉及到查詢了,查詢裡邊有許多非常好用的函數,這裡我只用到了一個between表示查詢id介於10到20之間的資料
List<Province> provinces = provinceDao.queryBuilder().where(ProvinceDao.Properties.ProvinceCode.between(10, 20)).build().list(); for (Province province : provinces) { //輸出查詢內容 Log.d("TAG","search:" + province.getProvinceName()); }
好了,到這裡greenDAO的一些簡單的功能就可以實現了,在工作的過程中用到了許多資料庫,無論是自己用原生的去寫,還是去使用一些開源框架。到現在感覺greenDAO應該算是很好用的一款開源框架,自己也很是喜歡。更想進一步的去探究它的奧祕。
到此這篇關於Android資料庫greenDAO設定與使用介紹的文章就介紹到這了,更多相關Android greenDAO內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45