当前位置: 代码迷 >> 综合 >> 3.3 GreenDAO 使用心得
  详细解决方案

3.3 GreenDAO 使用心得

热度:65   发布时间:2023-12-16 16:01:05.0
1: 在没有使用greendDAO,之前,我们在创建数据库的OpenHelper里面写的数据,例如创建表的时候,
的时候需要


private static final String CREATE_TEACHER="create table teacher(id integer primary key autoincrement,name text not null)";
    private static final String CREATE_STUDENT="create table students (id integer primary key autoincrement,name text not null,age integer default 18)";
    private static final String UPGRADE_TEACHERS_V4="alter table teacher add column email text";
      
输入上面的数据库的命令,而如果这个数据库里面的行很多的话,可能就很麻烦了.


2: 使用了greenDAO ,记住DAO意思就是Data access object,我们可以把表中每一个column都弄成一个java 对象的属性,在创建表的时候使用这个java对象就好了
而插入的时候直接插入一个这个java 类的对象就行了。非常方便。


3:关于Generator,这个generator 就是用来产生上面的java 对象的。


4:而DaoMaster, DaoSession, 都是用来操作这个java的。


简单的一句话:greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案。(greenDAO is a light & fast ORM solution that maps objects to SQLite databases.) 
DaoMaster:一看名字就知道它是Dao中的最大的官了。它保存了sqlitedatebase对象以及操作DAO classes(注意:不是对象)。其提供了一些创建和删除table的静态方法,其内部类OpenHelper和DevOpenHelper实现了SQLiteOpenHelper并创建数据库的框架。


DaoSession:会话层。操作具体的DAO对象(注意:是对象),比如各种getter方法。


XXXDao:实际生成的某某DAO类,通常对应具体的java类,比如NoteDao等。其有更多的权限和方法来操作数据库元素。


XXXEntity:持久的实体对象。通常代表了一个数据库row的标准java properties。






Schema schema = new Schema(1,"hellow.worldl");
Entity note = schema.addEntity("note");
note.addIdProperty();
note.addStirngProperty("text").notNull();
note.addStirngProperty("comment");
note.addDateProperty();


new DaoGeneratory().generatorAll(schema,".");




3个数据库的操作:
1:查询
2:添加
3:删除


private void setupDatebase() {
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,"notes-db",null);
        db = helper.getWritableDatabase();
        daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
    }
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,"notes-db",null);
        db = helper.getWritableDatabase();
        daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();




String orderBy = NoteDao.Properties.Text.columnName+" COLLATE LOCALIZED ASC";
Cursor cursor = db.query(getNoteDao.getTableName(),getNoteDao.getAllColumns,null,null,null,null,orderBy);
String[] from ={NoteDao.Properties.Text.columnName,NoteDao.Properties.Comment.columnName};
int[] to ={android.R.id.text1,android.R.id.text2};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item2,cursor,from,to);
setListAdapter(adapter);




getNoteDao().insert(note);
cursor.requery();


onListItemClick(){
getNoteDao().deleteByKey(id);
cursor.requery();
}




getNoteDao().insert(note);
cursor.requery();


onListItemClick(){
getNoteDao.deleteByKey(id);
cursor.requery();
}


getNoteDao.insert(note);
cursor.requery();




onListItemClick(){
getNoteDao.deleteByKey(id);
cursor.requery();
}