GreenDao使用注意事項

使用詳解

https://blog.csdn.net/qq_35956194/article/details/79167897

使用註解

@unique 唯一約束(這個會默認創建索引)
@NameInDb:有的時候數據庫中的字段跟你的對象字段不匹配的時候,可以使用此註解。

DaoMaster:用於創建數據庫以及獲取DaoSession
DaoSession:用於獲取各個表對應的Dao類,可以緩存數據.

這個沒有具體用過
DatabaseManager.getInstance().getSession().clear();//清楚 session 的所有緩存
DatabaseManager.getInstance().getSession().getStudentDao().deleteAll(); // 清除 StudentDao的緩存

各個表對應的Dao:提供了對錶進行增刪改查的方法,以及表的各個字段,表名等屬性.

升級

任何修改都應該對數據庫升級.
數據庫升級: build.gradle中數據庫版本增高.
如果不操作,數據庫之前保存的數據都會消失.默認是刪除所有表,再創建所有表,清除所有數據.
如果用三方,需要在MySQLiteOpenHelper中指定dao的class.

插入數據

insert: 如果主鍵已存在,再插入主鍵一致的數據時,會崩潰.
insertOrReplace: 如果主鍵已存在,再插入主鍵一致的數據時,會更新數據.

刪除

delete 也是基於deleteByKey,只不過是先找到key,然後在調用deleteByKey

@Id(autoincrement = true)

設置主鍵爲自動增長.如果之前表中最後一條數據主鍵爲10,主鍵列表爲1,2,3,4,5,6,7,8,9,10,將這條數據刪除之後,再新增一條數據,那麼新增的數據的id是11,而不是10.那麼數據id是1,2,3,4,5,6,7,8,9,11,缺少10.,也就是說主鍵會一直比增長,不管你曾經是否刪除過.
如果不添加(autoincrement = true),那麼索引一直是連續的,即使中途刪除過元素.

每一個實體bean都應該有一個主鍵

如果沒有設置主鍵,那麼實體bean不能更新,更新時會提示

does not have a single-column primary key

1,如果表單有唯一id,那麼這個id可以設置成主鍵.
2,如果這個表單沒有id,那麼需要我們添加一個id,@Id,如果需要自增,可以添加(autoincrement = true),同時id應該使用Long,大寫的L.那麼在創建bean對象的時候,主鍵應該設置null,設置成null才能自動增長,如果設置成一個固定的值,那麼這個id只能是那個固定的值.

查詢

得到所有數據

loadAll()

unique()返回唯一一條數據
unique()方法可以用來返回唯一一條數據, 如果只存在一條,那麼正常返回,如果存在多條,會崩潰.
1,如果某個字段添加註釋@id,或者@unique,表示它是唯一的,因此在查詢的時候可以利用unique()方法來獲取這唯一一行的數據.
2,如果字段不是唯一的,但是採用了unique方法來獲取,如果查詢到的列表中有兩條數據,那麼會崩潰.並提示Expected unique result, but count was 2.

與條件查詢

 List<Student> jin3 = studentDao.queryBuilder().where(StudentDao.Properties.Age.eq("1"), StudentDao.Properties.Name.eq("jin1")).list();

或條件查詢

 List<Student> jin3 = studentDao.queryBuilder().whereOr(StudentDao.Properties.Age.eq("1"), StudentDao.Properties.Name.eq("jin3")).list();

複雜查詢,與條件與或條件同時存在
或和與需要用()分隔開來

 List<Student> students = studentDao.queryRawCreate(" where (  id = ? and name = ?  ) or ( id = ?  )", "0", "jin0", "1").list();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章