1.首先還是說下使用greendao的步驟
不得不說在目前幾個主流數據庫框架的使用中,greendao一直以高效,簡單易用在Android開發人員中廣泛得到認可和好評。下面說下greendao的簡單使用步驟:
<1> 如圖,首先在你的project中的gradle裏面設置工具依賴
<2>接着在你的app中的gradle裏面導包
注:請忽略我其他包的引用,這些都是我重新搭建項目的一些基礎框架的引用,相信大家的選擇估計也跟我大差不離>-<
<3>給你將要存儲到數據庫中的對象添加註解
注:這裏我只是簡單的貼一下主要的2個註解,一個是類的註解@Entity 一個是主鍵id 這裏是自增
<4>make project 讓項目自動生成Greendao的DaoMaster,DaoSession以及與對象對應的表操作對象dao
<5>配置數據庫 將表操作對象的管理者也就是DaoSession 初始化 這裏一般將它初始化後放在應用全局中以供調用,所以這裏一般都寫在Application啓動時獲取並持有。
<6> 最後,寫一個操作工具類對錶進行增刪改查的操作
/**
* Created by qi.yang on 2018/3/9 0009.
*/
public class ExampleTestDao {
/**
* 添加數據,如果有重複則替換
* @param info
*/
public static void insertOrReplace(ExampleTestInfo info){
MyApplication.getDaoInstant().getExampleTestInfoDao().insertOrReplace(info);
}
/**
* 添加數據,直接添加
* @param info
*/
public static void insert(ExampleTestInfo info){
MyApplication.getDaoInstant().getExampleTestInfoDao().insert(info);
}
/**
* 刪除數據 刪除條件:id
* @param id
*/
public static void delete(long id){
if(checkExist(id)) {
MyApplication.getDaoInstant().getExampleTestInfoDao().deleteByKey(id);
}
}
/**
* 更新數據
* @param info
*/
public static void update(ExampleTestInfo info){
if(checkExist(info.getId())) {
MyApplication.getDaoInstant().getExampleTestInfoDao().update(info);
}
}
/**
* 查詢所有數據
* @return
*/
public static List<ExampleTestInfo> queryAll(){
return MyApplication.getDaoInstant().getExampleTestInfoDao().loadAll();
}
/**
* 查詢條件爲Name的列表
* @return
*/
public static List<ExampleTestInfo> queryList(String name){
return MyApplication.getDaoInstant().getExampleTestInfoDao().queryBuilder().where(ExampleTestInfoDao.Properties.Name.eq(name)).list();
}
/**
* 檢查需要修改的對象存在與否
* @param id
* @return
*/
private static boolean checkExist(long id){
ExampleTestInfo info = MyApplication.getDaoInstant().getExampleTestInfoDao().queryBuilder().where(ExampleTestInfoDao.Properties.Id.eq(id)).build().unique();
if(info == null){
ToastUtil.showToast(MyApplication.getmInstance().getApplicationContext(),"需要修改的對象不存在");
}
return info != null;
}
}
注意:這裏的所有導包 我就沒貼了 各位自己自動導一下就好了 可能有些同學會問爲什麼不直接daosession.getdao......而是還要多個步驟寫一個工具類,這個問題我相信絕大部分開發者應該都知道爲什麼這樣做,但這裏我也稍微簡單說明下,也給自己加深下好的編碼習慣和良好開發的思維。之所以這樣做,是爲了拓展我們代碼的可移植性,也提高我們代碼的可維護性。當你直接去用第三方jar的方法去做一件事情,並且這件事情在很多地方都會用到時,那麼以後當你需要替換這個jar或者替換這個框架的時候,它在可移植性上幾乎沒有,並且維護成本很高。類似於此的有很多第三方框架的使用,都需要程序員給它多“包”一層,自定義一個自己的工具類去做這些事情。好了,題外的口水話就說到這,大部分同行都知道。