-
實(shí)體模型化
生成DAO之前的設(shè)置:
//創(chuàng)建圖表對(duì)象
Schema schema=new Schema(1,"de.greenrobot.daoexample");
//給圖表對(duì)象添加實(shí)體
Entity user=schema.addEntity("User);
//一些基本設(shè)置,并且給實(shí)體添加屬性
user.addIdProperty();
user.addStringProperty("name");
user.addStringProperty("password");
user.addStringProperty("yearOfBirth");
Tips:默認(rèn)的數(shù)據(jù)庫(kù)名稱(chēng)以大寫(xiě)使用下劃線(xiàn)分隔單詞。例如,一個(gè)名為“創(chuàng)建日期”將成為一個(gè)數(shù)據(jù)庫(kù)列“CREATION_DATE”
-
核心類(lèi)
1.DaoMaster:它有靜態(tài)方法來(lái)創(chuàng)建表或刪除它們。它的內(nèi)部類(lèi)openhelper和devopenhelper是SQLiteOpenHelper實(shí)現(xiàn)創(chuàng)建SQLite數(shù)據(jù)庫(kù)的模式。
2.DaoSession:
可以使用一個(gè)getter方法,管理一個(gè)特定模式的所有可用的DAO對(duì)象.DaoSession還為實(shí)體提供了一些通用的持久性方法如插入、更新和刪除,刷新加載。
3.DAOs:數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象(DAO)和查詢(xún)實(shí)體.對(duì)每一個(gè)實(shí)體,greenDAO生成一個(gè)DAO.它有許多比DaoSession更持久化的方法。例如:計(jì)數(shù),loadAll,和insertinTx.
4.Entities:持久的對(duì)象.你不得不生成實(shí)體類(lèi),并使用標(biāo)準(zhǔn)java屬性代表一個(gè)數(shù)據(jù)庫(kù)對(duì)象(如一個(gè)POJO行或JavaBean)。
- 創(chuàng)建數(shù)據(jù)庫(kù)(在A(yíng)ndroid工程中)
下面的代碼示例闡釋了初始化數(shù)據(jù)庫(kù)和核心greendao類(lèi)的第一步:
helper = new DaoMaster.DevOpenHelper( this, "notes-db", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
noteDao = daoSession.getNoteDao();
注意,數(shù)據(jù)庫(kù)連接屬于daomaster,所以多個(gè)會(huì)話(huà)指的是同一個(gè)數(shù)據(jù)庫(kù)連接。新的會(huì)話(huà)可以很快地創(chuàng)建。然而,每個(gè)會(huì)話(huà)分配內(nèi)存,通常是一個(gè)會(huì)話(huà)“緩存”的實(shí)體。(這也是greenDAO快的一個(gè)原因,詳見(jiàn)官網(wǎng))
- QuesryBuilder 查詢(xún)
這是官方推薦的查詢(xún)類(lèi),可以使用SQL語(yǔ)句,也可以使用封裝好的方法。
例1: Query for all users with the first name “Joe” ordered by their last name.
List joes = userDao.queryBuilder()Qu
.where(Properties.FirstName.eq("Joe"))
.orderAsc(Properties.LastName)
.list();
例2:查詢(xún)一個(gè)FisrstName=="Joe",并且出生日大于1970或者出生日等于1970并且月份大于10的User
QueryBuilder qb = userDao.queryBuilder();
qb.where(Properties.FirstName.eq("Joe"),
qb.or(Properties.YearOfBirth.gt(1970),
qb.and(Properties.YearOfBirth.eq(1970),
Properties.MonthOfBirth.ge(10))));
List youngJoes = qb.list();