-
實體模型化
生成DAO之前的設置:
//創(chuàng)建圖表對象
Schema schema=new Schema(1,"de.greenrobot.daoexample");
//給圖表對象添加實體
Entity user=schema.addEntity("User);
//一些基本設置抚吠,并且給實體添加屬性
user.addIdProperty();
user.addStringProperty("name");
user.addStringProperty("password");
user.addStringProperty("yearOfBirth");
Tips:默認的數據庫名稱以大寫使用下劃線分隔單詞。例如思犁,一個名為“創(chuàng)建日期”將成為一個數據庫列“CREATION_DATE”
-
核心類
1.DaoMaster:它有靜態(tài)方法來創(chuàng)建表或刪除它們贯溅。它的內部類openhelper和devopenhelper是SQLiteOpenHelper實現創(chuàng)建SQLite數據庫的模式叠殷。
2.DaoSession:
可以使用一個getter方法,管理一個特定模式的所有可用的DAO對象.DaoSession還為實體提供了一些通用的持久性方法如插入、更新和刪除巍举,刷新加載溶其。
3.DAOs:數據訪問對象(DAO)和查詢實體.對每一個實體,greenDAO生成一個DAO.它有許多比DaoSession更持久化的方法策橘。例如:計數炸渡,loadAll,和insertinTx.
4.Entities:持久的對象.你不得不生成實體類丽已,并使用標準java屬性代表一個數據庫對象(如一個POJO行或JavaBean)蚌堵。
- 創(chuàng)建數據庫(在Android工程中)
下面的代碼示例闡釋了初始化數據庫和核心greendao類的第一步:
helper = new DaoMaster.DevOpenHelper( this, "notes-db", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
noteDao = daoSession.getNoteDao();
注意,數據庫連接屬于daomaster,所以多個會話指的是同一個數據庫連接吼畏。新的會話可以很快地創(chuàng)建督赤。然而,每個會話分配內存泻蚊,通常是一個會話“緩存”的實體躲舌。(這也是greenDAO快的一個原因,詳見官網)
- QuesryBuilder 查詢
這是官方推薦的查詢類,可以使用SQL語句性雄,也可以使用封裝好的方法没卸。
例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:查詢一個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();