-
实体模型化
生成DAO之前的设置:
//创建图表对象
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:默认的数据库名称以大写使用下划线分隔单词。例如,一个名为“创建日期”将成为一个数据库列“CREATION_DATE”
-
核心类
1.DaoMaster:它有静态方法来创建表或删除它们。它的内部类openhelper和devopenhelper是SQLiteOpenHelper实现创建SQLite数据库的模式。
2.DaoSession:
可以使用一个getter方法,管理一个特定模式的所有可用的DAO对象.DaoSession还为实体提供了一些通用的持久性方法如插入、更新和删除,刷新加载。
3.DAOs:数据访问对象(DAO)和查询实体.对每一个实体,greenDAO生成一个DAO.它有许多比DaoSession更持久化的方法。例如:计数,loadAll,和insertinTx.
4.Entities:持久的对象.你不得不生成实体类,并使用标准java属性代表一个数据库对象(如一个POJO行或JavaBean)。
- 创建数据库(在Android工程中)
下面的代码示例阐释了初始化数据库和核心greendao类的第一步:
helper = new DaoMaster.DevOpenHelper( this, "notes-db", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
noteDao = daoSession.getNoteDao();
注意,数据库连接属于daomaster,所以多个会话指的是同一个数据库连接。新的会话可以很快地创建。然而,每个会话分配内存,通常是一个会话“缓存”的实体。(这也是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();